Did you know? DZone has great portals for Python, Cloud, NoSQL, and HTML5!

John is the manager and founding member of the official Adobe ColdFusion User Group for Devon. An Adobe Certified Expert in Advanced ColdFusion, John regularly blogs about ColdFusion and contributes to several FOSS projects. His hobbies include writing in the third person. John has posted 20 posts at DZone. You can read more from them at their website. View Full User Profile

BeanFactory Aware Beans with WireBox

08.15.2011
Email
Views: 3782
  • submit to reddit

A while ago I wrote a blog post about making beans BeanFactory aware you can read it here: Inject ColdSpring into your Beans. These days I tend to use Wirebox for most of my projects. In the previous blog post I was creating DAOs on the fly and you can do the same with Wirebox. WireBox can also handles instantition and wiring of transient objects.

If wanted to inject WireBox (which is my beanFactory) into a UserService.cfc then I could do:

component hint="I am the UserService"
{
  property name="beanFactory" inject="wirebox";
}

or if you're not a fan of property injection, then you can use a similar syntax as ColdSpring:

component hint="I am the UserService"
{
  void setBeanFactory( beanfactory )
  {
    variables.beanfactory = arguments.beanfactory;
  }
}

Now you can have methods like getDAO and newUser which return fully wired beans like so:

component hint="I am the UserService"
{
/*
* returns a wired DAO bean (singleton)
*/
any getDAO( classname )
{
return variables.beanfactor.getInstance( arguments.getDAO );
}

/*
* returns a wired transient User bean
*/
any newUser()
{
return variables.beanfactor.getInstance( "User" );
}

/*
* inject beanfactory
*/
void setBeanFactory( beanfactory )
{
variables.beanfactory = arguments.beanfactory;
}
}


References
Published at DZone with permission of its author, John Whish. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)