Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

BeanFactory Aware Beans with WireBox

DZone's Guide to

BeanFactory Aware Beans with WireBox

· Java Zone
Free Resource

Download Microservices for Java Developers: A hands-on introduction to frameworks and containers. Brought to you in partnership with Red Hat.

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;
}
}


Download Modern Java EE Design Patterns: Building Scalable Architecture for Sustainable Enterprise Development.  Brought to you in partnership with Red Hat

Topics:

Published at DZone with permission of John Whish, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}