Struts2与Spring的整合,是MVC和Ioc的整合,必须充分利用他们的特性
1、整合的原理:Struts2拦截器拦截用户请求后,需要将信息通过struts.xml的配置文件的内容传递到相应的Action中,在这个时候就需要创建Action实例,整合Spring框架后,Action实例交给Spring容器创建,并且将相应的业务逻辑组件装配到Action中。
2、如何实现Spring管理Action:
1)在applicationContext.xml中声明Action,并按照Spring的配置规则,定义好业务逻辑组件;在struts.xml中,配置Action时,class属性的值为Spring配置文件中的id值,这样就形成一个转移。sturts.xml中找class属性,通过该属性值到applicationContext.xml中找该Action,然后创建。
2)无需在applicationContext.xml中配置Action,只需要配置业务逻辑Bean,Spring插件会通过Bean Id与Action中的业务逻辑名称进行匹配,比如<bean id="ms" class="com.my.Mservice">,在Action中有Mservice ms这个属性,那么名字相同就会由Spring容易装配。
3、整合的思考:第一种整合方式配置文件太冗杂,建立一个Action需要在2个配置文件中都声明,太复杂。第二种方式耦合度太高,配置必须使用相同名称,不利于高层次解偶。
4、采取的解决方法:在Action和业务逻辑层之间加入一个接口,该接口有所有的业务逻辑属性,并且有geter和seter方法,并在applicationContext.xml中声明,Action通过该接口访问业务逻辑,所有Action均继承自一个superAction,该接口就在这个superAction中获得实例,继承后所有Action都可以通过该接口调用业务逻辑。