service注入到action中


service注入到action中

之前本人每次要獲得service都是在action自己通過WebApplicationContext的getBean獲得的,一直在spring中只配置到了service這一層,沒有配置過action。今天閑的無聊將action也配置到了spring,原來是這么的簡單。

1.添加jar包struts2-spring-plugin-xxx.jar
2.在struts.xml配置文件中增加

<constant name="struts.objectFactory" value="spring"/>

3.在spring.xml中加入需要的action

<bean class="com.gavin.sma.action.UserInfoAction" id="userInfoAction">
        <property name="userInfoService" ref="userInfoService"></property>
    </bean>

好了,完成了。


順便說說ObjectFactory(轉載至 http://aixiangct.blog.163.com/blog/static/9152246120101016113237982)
ObjectFactory,是xwork中很重要的一個類,是產生action的地方。單獨使用xwork的時候,action都是這個類創建的。
struts2 包裝了ObjectFactory,自成了一個StrutsObjectFactory,他是繼承自ObjectFactory的一個類,因此 struts2默認產生action的類就不使用xwork的ObjectFactory了,而是使用StrutsObjectFactory。

struts2 的插件struts2-spring-plugin-2.1.8.1.jar,又做了一個對象工 廠,StrutsSpringObjectFactory,它的父類是xwork的SpringObjectFactory,最原始的父類也是 ObjectFactory,我想xwork提供SpringObjectFactory的目的就是讓實現這繼承這個類,實現spring工廠。

於是struts2中也就是說有3個 對象工廠,
org.apache.struts2.spring.StrutsSpringObjectFactory(struts2的spring插件提供)

org.apache.struts2.impl.StrutsObjectFactory(struts2自帶)

com.opensymphony.xwork2.ObjectFactory(xwork自帶)。
他們都可以用於產生action。

在 xwork中默認使用ObjectFactory,在struts2中默認使用StrutsObjectFactory。使用struts2的 spring插件的時候默認使用StrutsSpringObjectFactory,這些都是自動的,其中前兩個都是struts2的內容。都是由
<constant name="struts.objectFactory" value="spring" />
來控制,這里的value,就是
<bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />

在這bean里面定義的是哪個工廠,struts2就用哪個工廠。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM