AtomicReference?

On Sunday, August 25, 2013, Phil Steitz wrote:

> On 8/24/13 11:33 AM, Oliver Heger wrote:
> > Hi all,
> >
> > regarding a principle design question I would like to get your opinion:
> >
> > In [configuration] there are a few static utility classes. One of them
> > is BeanHelper which supports the creation of beans from configuration
> > data. The actual bean creation is done by a BeanFactory which can be
> > configured using the static (currently unsynchronized)
> > setDefaultBeanFactory() method.
> >
> > Sebb stated correctly that this approach is thread-hostile [1]. An
> > alternative could be to make BeanHelper a non-static class which can be
> > instantiated and configured per instance. This would be more flexible
> > and would also simplify testing of client code (just pass in a mock
> > object). The drawback is that clients now always would have to create an
> > instance, so the API becomes slightly more verbose - in fact, most
> > clients will probably never have the requirement to change the default
> > bean factory.
> >
> > So, the question is, what do you prefer? The static approach like
> > Object myBean = BeanHelper.createBean(...);
> >
> > or using an instance as in
> > BeanHelper helper = new BeanHelper(myFactory);
> > // or use no-args ctor for default factory
> > Object myBean = helper.createBean(...);
>
> Personally, I would like the static method better as a user.
> Synchronizing access to the static factory field would seem to fix
> the problem unless I am missing something.  Also, I would not expect
> lots of concurrent access to the getter/setter for this field in
> normal use cases , so the performance overhead of the sync would be
> immaterial.  Having the setter there may also be a little easier for
> dependency injection.
>
> Phil
> >
> > TIA
> > Oliver
> >
> > [1] https://issues.apache.org/jira/browse/CONFIGURATION-486
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org<javascript:;>
> > For additional commands, e-mail: dev-h...@commons.apache.org<javascript:;>
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org <javascript:;>
> For additional commands, e-mail: dev-h...@commons.apache.org<javascript:;>
>
>

Reply via email to