當指定struts.objectFactory爲spring時,struts2框架就會把bean轉發給spring來創建,裝配,注入。但是bean創建完成之後,還是由struts容器來管理其生命週期。配置方式:
(1)struts.xml中:
- <constant name="struts.objectFactory" value="spring" />
(2)struts.properties中:
- struts.objectFactory=spring
通常情況下,這樣子就夠了,然後在struts的action-mapping配置文件中,如下:
- <action name="user" class="com.myapp.admin.web.action.user.UserAction"></action>
即可,如果在Action中有依賴於其它的BEAN,也會被自動注入進來。這時候,Action實例是以prototype方式創建的,SPRING會爲每個請求創建一個ACTION的實例。
在某些時候,你可能希望不僅僅讓SPRING創建和裝配Action對象,還希望讓SPRING完全管理這些對象,如希望使用AOP或者希望使用acegi時。這時候,只需要在spring的配置文件中定義這些action 即可。如在applicationContext.xml文件中:
- <bean id="user" class="com.myapp.web.action.user.UserAction"/>
然後在action-mapping中,指定class="user"即可。