On Fri, Jan 13, 2012 at 3:00 PM, Douglas Hubler <[email protected]> wrote: > On Fri, Jan 13, 2012 at 7:53 AM, Mircea Carasel <[email protected]> wrote: >> >> >> On Fri, Jan 13, 2012 at 12:14 PM, Douglas Hubler <[email protected]> wrote: >>> >>> 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. >> >> I think that another good way is to make one of the beans to implement >> ApplicationContextAware interface and then to look up for the bean you want >> using ApplicationContext.getBean. I recall that are many examples across >> the project that make use of this Spring technique > > I think it's BeanFactoryAware. If so, yes, we're talking about the > same thing. ApplicationContextAware is for catching spring events.
Same thing, ApplicationContext it's a BeanFactory _______________________________________________ sipx-dev mailing list [email protected] List Archive: http://list.sipfoundry.org/archive/sipx-dev/
