2014-01-07 109 views
1

我有一個很大的web應用程序。作爲優化代碼的一部分,我將它們分成了三個模塊。Spring配置 - 多模塊Maven項目

Module 1 : Web 
Module 2 : driver module 
Module 3 : Reporting module 

這裏模塊1 &模塊3是彈簧的項目,其中,作爲該模塊2是目前純Java模塊。

我想通過模塊訪問模塊3(其是在彈簧)2.

應用上下文個XML存在對於模塊1和模塊3(說m1.xml和m3.xml)

在m1.xml

我已經包括m3.xml作爲

<import resource="classpath*:m3.xml" /> 

在模塊2中,我試圖在模塊3介紹自動裝配參考類但自動裝配Autowired領域的第一次使用拋出一個空指針異常。

在組件掃描中,我添加了基礎包,以便它能夠識別類。

任何一個可以指導我如何重寫模塊2來解決這個問題(ApplicationContext的XML?等等)

我用彈簧3.1

+0

您試圖自動裝入/注入Spring組件的依賴關係的類是什麼?如果這不是一個獨立的spring組件,我認爲你不能在它中注入任何依賴。 – Hrishikesh

+0

是的,它是一個彈簧組件。即說ReportService是M3中的一個註釋類。我想在M2中爲這個類引入一個自動裝配參考 – appu

回答

1

我想通了這個問題!

其實從Module-1(webapp),我打電話給驅動程序模塊,然後從那裏調用報告模塊。

問題是,從驅動程序到報告,我打電話使用新的引用(新報告()),所以這些不再由spring容器管理。通常情況下,彈簧容器管理的對象只能自動接線。默認情況下,new()創建的類中的Autowired引用不會自動佈線。

這個問題可以從兩個方面

http://seniorjava.wordpress.com/2013/04/03/spring-configurable-magic/修復(春 - @Configurable)

OR

http://sujitpal.blogspot.in/2007/03/accessing-spring-beans-from-legacy-code.html(分享通過靜態方法應用程序上下文這對單元測試的副作用。)