第一種方式:
Action的初始化交給Action,此時spring的插件會自動去spring的容器中按照名字去組裝初始化Action,在這種情況下意味着有兩個容器,一個struts2管理的容器,一個是spring容器。要注意的是在struts.xml文件中action的配置,class必須是當前Action所在的包的全稱。
Action此時不需要去初始化(由struts2初始化),service的接口不需要注入。這表現在如果用annotation註解,action不需要@Component,依賴注入不需要的@Resource,Action默認的是多例的,不需要@Scope("prototype").如果採用xml配置,則不需要配置bean.
代碼如下:Action配置如下
struts.xml文件配置如下:
第二種方式
:Action的初始化交給spring,依賴注入同樣的交給spirng,這表現在annotation註解中,Action必須@Compeonent,生命週期爲prototype,
但是在action在struts.xml文件中配置class的名字必須是@components的名字,依賴注入必須是@Resources
action如下:
struts.xm l
結論:建議採用的第二種配置方式,對象的初始化,注入統一交給spring管理,也就是struts-plugin.xml文件中提供的StrutsSpringObjectFactory工廠。