2017-10-05 45 views
0

我有完整註釋的spring mvc應用程序。哪裏是添加@componentScan的最佳地點?讓我知道這些建議中的任何一個放置組件的位置可以使用

  1. 擴展AbstractAnnotationConfigDispatcherServletInitializer的類?
  2. 類延伸WebMvcConfigurationSupport
  3. 類延伸WebSecurityConfigurerAdapter

我放置在2沒有安全和workign細。當我增加安全性時,我遇到安全配置問題,無法找到userdetails服務。然後我轉移到3. 我發現了其他安全問題,並將代碼重置爲null,而不是來自getRootConfigClasses()的 securityconfig對象。然後我得到了沒有找到的控制器的問題。我能夠修復它把組分安裝在2.

我只想知道任何鏈接和它是如何工作的。將@componentscan放入所有這3個可以嗎?感謝你的幫助。

回答

0

這取決於你的項目的包樹和你想掃描的內容。如果您想掃描所有帶註釋的註釋類,如:@Configuration, @Component, @Repository, etc...@ComponentScan放在包樹頂部。您可以使用basePackages屬性指定從何處開始掃描。

假設你有這樣的組織的應用程序包:

com.app.configcom.app.config.webcom.app.servicescom.app.web.controllers

如果要掃描所有annoted類,把與@ComponentScan annoted類中com.app包。

如果您希望只掃描控制器,加@ComponentScan(basePackages="com.app.web.controllers")

它是由你來決定。

+0

感謝您的詳細回覆。我可以在註釋@componentScan中將僞類MyClass放入包com.app中以掃描所有內容嗎?或者它是否像實現AbstractAnnotationConfigDispatcherServletInitializer的類一樣從主類中掃描?我想了解如何創建所有的bean而不依賴於安全配置對象返回或空返回。 – chinni

+0

是的,你可以在該類中添加'@ Configuration',如果你這樣做的話。在com.app包和子包中聲明的所有bean都將被發現。首先明白這一點非常重要,如果你有一天在Spring Boot工作。 – akuma8

+0

謝謝。將嘗試它。現在我把@componentScan放在兩個類中。所以任何一個對象都是以任意順序創建的,這些bean可以沒有任何問題 – chinni

相關問題