2010-12-08 62 views
0

我目前正在使用一個現有的項目,它使用的是Struts 2 + Spring 2.5。struts 2動作類實例變量初始化

有一個動作類,姑且稱之爲ActionA.java,在其內部,有一個實例變量是一個服務接口一樣,

類ActionA {

//變量

受保護的ServiceAInterface serviceA;

//動作方法,利用serviceA方法

}

在彈簧bean定義

,有一個定義,如<豆ID = 「serviceA」 類= 「com.company.serviceAImplementationClass」/ >

我沒有發現其他地方有關的serviceA變量的初始化,真的想知道,哪一部分找到這個變量的正確的實現類,並初始化它?

它真的讓我困惑。感謝任何啓發。

成龍

+0

我想我找到了答案。一旦struts-spring插件放在那裏,它就會配置struts objectFactory來彈出。默認的自動佈線是通過名稱來表示的,在初始化動作對象之後,它將通過使用具有與屬性名稱相同的bean id的spring bean來設置其屬性。 as,http://struts.apache.org/2.x/docs/spring-plugin.html – lwpro2 2010-12-08 07:55:19

回答

0

的一種方法是定義服務bean作爲

<bean id="serviceA" class="com.company.serviceAImplementationClass"/> 

<bean id="actionClassA" class="com.company.ActionA"> 
    <property name="serviceA" ref="serviceA"/> 
</bean> 

,然後在你的類,寫setter和getter爲您服務類。

class ActionA{ 

//variables 

protected ServiceAInterface serviceA; 

//action methods, utilizing serviceA methods 

public ServiceAInterface getServiceA() { 
    return this.serviceA; 
} 

public void setServiceA(ServiceAInterface serviceA) 
    this.serviceA = serviceA; 
} 

} 

那就是它。服務類bean將在應用程序啓動時由Spring初始化,並將其引用分配給您的操作類。

+0

爲動作類bean定義,即使你不配置屬性,如下所示 只要你在動作類裏面有setter,屬性名和bean定義一樣,就是」serviceA「。它也可以。 其實這是我的問題。無論如何,謝謝你的評論。我自己也找到了答案。 – lwpro2 2010-12-10 09:21:45