2014-06-16 146 views
2

我正在使用註釋設置一個帶Boot的非常小的Spring/REST/JPA項目。ComponentScan順序是否重要?

我得到我的REST控制器類,它具有一個自動連接庫變量,一些豆沒有發現錯誤,當我將我的JPA庫類向不同的包,並呼籲其包裝componentscan。但是,當我的所有文件(共5個)位於同一個包中時,一切正常。

所以我在想,不過,不太可能,如果組件掃描順序的問題?例如,如果一個類從一個尚未進行「組件掃描」的軟件包中自動連線一些bean,是否會導致Bean找不到錯誤?

+0

否。彈簧加載所有的豆子,然後進行佈線。 –

+0

@Evgeni謝謝 – JeffLL

回答

0

不,春天加載所有的配置信息,然後創建豆(儘可能是可能的),那麼電線在一起所有事情都一字排開。所有配置將在啓動過程中被讀取。

2

也許你需要共享一些代碼。當你移動這些東西時,你還需要告訴Spring他們去了哪裏。我的猜測是,你還沒有定義@EntityScan@EnableJpaRepositories(其中默​​認的@EnableAutoConfiguration的位置)。

+0

啊,我不知道,我會試試看,謝謝! – JeffLL

1

可能有幾個問題:

  • 你移動你的類了一些包,你有沒有參數@ComponentScan的。這基本上意味着組件僅在此包和其子項中進行掃描。因此,移動的類不會被掃描,並且沒有bean連線。
  • @ComponentScan args中的包名稱錯誤。

的順序並不在所有問題。有一個@Order註釋,但它的目的更多的是以不同的順序加載多個實現。首先創建Bean定義,它們與佈線無關。然後通過bean post處理器,注入自動佈線的bean。由於沒有bean定義。沒有什麼可以注入的。