In a recent BeanPostProcessor implementation, I noticed our logic was being 
invoked twice in both the before and after initialization callbacks for struts 
constructed objects like actions, interceptors, etc while normal constructed 
Spring beans via component scanning were only being invoked once.

After debugging in 3.2.24.1, I narrowed the issue down to the 
SpringObjectFactory implementation in Xwork2 at lines 194 to 197.  It seems 
XWork's implementation manually calls the before and after BeanPostProcessor 
callbacks.  Looking at the Spring source for 
AbstractAutowireCapableBeanFactory, it seems initializeBean's implementation 
also calls these callback methods too, which is what leads to re-evaluating the 
struts constructed objects twice.

I believe the plugin is based on Spring 3.0.5 (IIRC) and even reviewing the 
code base at that release along with the latest 4.2.1 release, both confirm 
that initializeBean has always invoked the BeanPostProcessor callbacks 
internally and therefore, XWork's implementation really should not worry with 
manually invoking them too.

Is there a technical reason why the SpringObjectFactory is doing this or is 
this an oversight?  
This just seems like a significant overhead on bean management that could be 
avoided, right?

Thanks,
Chris


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to