這篇文章主要介紹“spring boot自動(dòng)注入出現(xiàn)Consider defining a bean of type ‘xxx‘ in your configuration問題怎么解決”,在日常操作中,相信很多人在spring boot自動(dòng)注入出現(xiàn)Consider defining a bean of type ‘xxx‘ in your configuration問題怎么解決問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”spring boot自動(dòng)注入出現(xiàn)Consider defining a bean of type ‘xxx‘ in your configuration問題怎么解決”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比華容網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式華容網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋華容地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
搭建完spring boot的demo后自然要實(shí)現(xiàn)自動(dòng)注入來體現(xiàn)spring ioc的便利了,但是我在實(shí)施過程中出現(xiàn)了這么一個(gè)問題,見下面,這里找到解決辦法記錄下來,供遇到同樣的問題的朋友參考
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 'com.example.service.HelloService' in your configuration.
然后我又看了下自己寫的幾個(gè)類以及注解見下面,感覺寫的沒有問題啊
控制器 TestController
接口HelloService
根據(jù)英文的提示是在配置中找不到一個(gè)指定自動(dòng)注入類型的bean,經(jīng)過多方排查得出結(jié)論:
正常情況下加上@Component注解的類會(huì)自動(dòng)被Spring掃描到生成Bean注冊(cè)到spring容器中,既然他說沒找到,也就是該注解被沒有被spring識(shí)別,問題的核心關(guān)鍵就在application類的注解SpringBootApplication上
這個(gè)注解其實(shí)相當(dāng)于下面這一堆注解的效果,其中一個(gè)注解就是@Component,在默認(rèn)情況下只能掃描與控制器在同一個(gè)包下以及其子包下的@Component注解,以及能將指定注解的類自動(dòng)注冊(cè)為Bean的@Service@Controller和@ Repository,至此明白問題所在,之前我將接口與對(duì)應(yīng)實(shí)現(xiàn)類放在了與控制器所在包的同一級(jí)目錄下,這樣的注解自然是無法被識(shí)別的
@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 .將接口與對(duì)應(yīng)的實(shí)現(xiàn)類放在與application啟動(dòng)類的同一個(gè)目錄或者他的子目錄下,這樣注解可以被掃描到,這是最省事的辦法
2 .在指定的application類上加上這么一行注解,手動(dòng)指定application類要掃描哪些包下的注解,見下圖
通過這兩種方式,那個(gè)找不到指定Bean的錯(cuò)誤就成功解決了。。。。。那么這篇就這樣吧
PS:控制器Controller也要放在與application同級(jí)或者子目錄下,道理大致一樣
到此,關(guān)于“spring boot自動(dòng)注入出現(xiàn)Consider defining a bean of type ‘xxx‘ in your configuration問題怎么解決”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!