2016-06-20 219 views
2

我遇到了一個奇怪的問題。我認爲,如果爲掃描指定了頂層包,組件掃描會遞歸掃描子包。組件掃描不掃描子包

我的存儲庫和實體是項目的maven依賴項。他們住在包名稱com.foo.bar.xyz下,我的應用程序配置位於包com.foo.bar下。當我寫@ComponentScan(basePackages = "com.foo.bar"),以及@EnableJpaRepositories它給出了一個錯誤,找不到存儲庫bean。

但是,當我指定頂級存儲庫軟件包(如@EnableJpaRepositories(basePackages = com.foo.bar.xyz))以及上面的組件掃描時,它會很好地檢測存儲庫。

現在這種情況的發生只是因爲存儲庫和實體被注入爲maven依賴?那麼組件掃描的遞歸部分,掃描子包或子目錄?

回答

3

現在發生這種情況的原因僅僅是因爲儲存庫和實體​​被 注入爲maven依賴項?

  • 不,它不是

所以確實組件掃描的遞歸部分,掃描子包 或子目錄?

  • 是組件掃描並進行遞歸搜索子包

要細說了@ComponentScan旨在以搜索@Component或全部類別及其子類型,如@Controller而通過註釋的,以使春數據JPA使用@EnableJpaRepositories批註的PersistenceContext類,並配置Spring Data JPA爲存儲庫接口創建實現時掃描的基本包。因此需要聲明@ComponentScan@EnableJpaRepositories

的基本包信息