關於spring boot自動注入出現Consider defining a bean of type 'xxx' in your configuration問題解決方案


搭建完spring boot的demo后自然要實現自動注入來體現spring ioc的便利了,但是我在實施過程中出現了這么一個問題,見下面,這里找到解決辦法記錄下來,供遇到同樣的問題的同僚參考 

 

Description:

Field helloService in com.example.demo.service.TestController required a bean of type 'com.example.service.HelloService' that could not be found.


Action:

Consider defining a bean of type 'XXX' in your configuration.

根據英文的提示是在配置中找不到一個指定自動注入類型的bean,經過多方排查得出結論: 
  正常情況下加上@Component注解的類會自動被Spring掃描到生成Bean注冊到spring容器中,既然他說沒找到,也就是該注解被沒有被spring識別,問題的核心關鍵就在application類的注解SpringBootApplication上 

這個注解其實相當於下面這一堆注解的效果,其中一個注解就是@Component,在默認情況下只能掃描與控制器在同一個包下以及其子包下的@Component注解,以及能將指定注解的類自動注冊為Bean的@Service@Controller和@ Repository

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters={@Filter(type=CUSTOM, classes={TypeExcludeFilter.class}), @Filter(type=CUSTOM, classes={AutoConfigurationExcludeFilter.class})})
@Target(value={TYPE})
@Retention(value=RUNTIME)
@Documented
@Inherited

 

至此,得出兩種解決辦法: 
  1 .將接口與對應的實現類放在與application啟動類的同一個目錄或者他的子目錄下,這樣注解可以被掃描到,這是最省事的辦法 
  2 .在指定的application類上加上這么一行注解,手動指定application類要掃描哪些包下的注解,見下圖 
  這里寫圖片描述 
   
  通過這兩種方式,那個找不到指定Bean的錯誤就成功解決了

 

 

參考:http://blog.csdn.net/a532672728/article/details/77702772

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM