在使用struts2开发Action的时候遇到一个问题,注解@Autowired不起作用,导致出现NullPointerException。这说明了Action实例并不是由spring来创建的(由struts2的objectFactory创建)。那么有什么办法可以将Action Bean交给Spring来管理吗?这时struts2的spring plugin就派上用场了。
Spring plugin的功能有:
1. 允许有spring来创建Action, Interceptor和Results.
2. Sturts创建对象完成后,可以使用spring来完成@Autowired
3. 如果不使用Spring的ObjectFactory来创建,此插件提供了两个Interceptor来完成Action中的@Autowired.
使用这个插件时我们要做的工作很少,很简单
1. 将此插件的jar加入classpath
2. 添加struts常量如下:
sturts.properties
struts.objectFactory = org.apache.struts2.spring.StrutsSpringObjectFactory
或者
struts.xml
<struts> <constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" /> ... </struts>
具体请参考: