Someone discovered using lookup functions was a way to avoid circular references

<bean a>
  <bean b>
</bean>

<bean b>
  <lookup bean a>
</bean>

The problem with this is that bean b needs to be abstract so spring
can inject the method.  Abstract classes do not warn you when a class
has not implemented a particular interface fully which is an
incredibly valuable thing to know, especially in refactoring projects
as I discovered.

In every case I analyzed the circular dependency and easily avoid the
issue by shuffling code around.  In each case, the final
implementation was more cohesive, and overall more clear.

Another use of lookup functions is to instantiate prototype beans (as
opposed to singleton beans). I admit this *is* a legitimate use of
this spring feature however I found that the issue with abstract
classes I mentioned earlier to be so great it's not worth using lookup
functions IMO.  Instead, simply keeping a reference to the bean
factory and calling beanFactory.getBean to be fairly simple workaround
however primitive it is.

Please respond if you disagree or have comments, otherwise I'll assume
we're all ok w/avoiding this feature.

-- 
Join me to talk about sipXecs and the upcoming version 4.6 at
  CoLab @ CSU  March (5th & 6th).
     http://www.sipfoundry.org/sipx-colab
Hack with me on at the CoLab Hackfest.
  http://wiki.sipfoundry.org/display/sipXecs/2012+sipX-CoLab+Hackfest
_______________________________________________
sipx-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipx-dev/

Reply via email to