第一种方式:
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工厂。