2012-06-14 159 views
2

我有一個基於struts2(主要使用註釋)的遺留Web應用程序。在調試時,我發現所有依賴項(如服務層和dao層) 都是在struts 2 action中自動注入的。我期待在struts.xml中必須有一個彈簧攔截器,它必須這樣做。如何依賴注入struts2 action with spring?

但是我沒有在那裏發現任何彈簧相關的攔截器。也在web.xml我沒有找到任何相關的東西,必須做這種工作。 我不知道如何依賴(與春季)在Struts2的行動注入...

我可以看到struts2-convention-plugin-2.2.3.1.jar文件中的類路徑。這是否意味着filterDispatcher在運行時查找此jar文件,如果發現它,請在操作中注入依賴文件。在此過程中,任何攔截器是否也有幫助?

+0

我們可以看到,有注入到他們的依賴對象的實例配置的例子,? –

+0

所以你說在web.xml中沒有定義spring偵聽器? – fmucar

+0

@fmucar我在web.xml中看到了ContextLoaderListener,它讀取了web.xml中參數contextConfigLocation參數給出的xam文件。但是,這將僅實例化單身bean,而不是原型或請求範圍。對?要注入原型bean,必須通過攔截器或插件來完成。 –

回答

3

請參閱的struts2-spring-plugin-x.x.x.x.jarstruts-plugin.xml,你可以找到的配置有關對象工廠和自動裝配攔截。它使用struts2的插件功能,並且您可以從Struts Guide中搜索「插件」以獲取詳細信息。

+1

沉是正確的。 ObjectFactory負責創建Struts2使用的所有動作,攔截器,結果和類型轉換器。默認情況下,Struts2使用反射來創建這些對象,但是有一些插件可以讓Spring和Guice允許這些框架創建對象。 –

0

必須有一個攔截器,它在動作類之前執行,並使用Java反射API執行依賴注入..或Struts 2 Reflection工具..http://struts.apache.org/2.3.4 /struts2-plugins/struts2-convention-plugin/apidocs/org/apache/struts2/convention/ReflectionTools.html 檢查攔截器堆棧。

+0

rajesh我可以在類路徑中看到struts2-convention-plugin-2.2.3.1.jar文件。它是否意味着filterDispatcher在運行時查找這個jar,如果它發現它,在action.Right中注入依賴關係?在這個過程中,任何Interceptor是否也有幫助? –