用Spring整合Struts的目的,主要是解决Struts的Action中所要使用的依赖类的松散耦合问题。例如,Action要处理持久层操作,就需要一个依赖于一个操作持久层的类,为了使用Spring实现依赖关系的松散耦合,主要就是解决如何让Struts的Action访问Spring所管理的bean的问题。
为了解决这个问题,Spring提供了两种方式:
第一种方式是 让Struts的Action继承自一个Spring提供的父类,这个父类具有操控Spring的bean的能力。这种方式,虽然解决了Action对对其依赖类的耦合关系,但是却是Action与Spring提供的父类耦合起来。不可取。
主要说第二种方式:
1. 让Struts中能够使用Spring的应用上下文配置。有两种方式实现:
方法1 在Struts配置文件中,注册Struts插件:
方法2 在web.xml中配置 一个启动的Servlet来加载Spring的应用上下文配置(例如applicationContext.xml):
2. 使用Spring提供的类来代替Struts的总控制器。当一个路径的请求,例如*.do,被交给这个控制器的时候,Spring提供的控制器会将根据路径查找Spring的应用上下文配置,交给相应的Action(这些Action在下面第三步中被配置在Spring的应用上下文配置中)去处理。
3. 在Spring的配置文件中,配置Struts的Action的bean。在这个bean中,可以通过Property标签注入这个Action的依赖项目。例如: