springboot啟動(dòng)的注意事項(xiàng)之不同包下有同樣名字的class類問題
springboot不同包下有同樣名字的class類
springboot 在啟動(dòng)時(shí)候,常啟動(dòng)不起來,檢查發(fā)現(xiàn)是不同包下面有同名的service和serviceImpl,按理說不同包下是可以有同名的類存在的,但是啟動(dòng)就是啟動(dòng)不了,報(bào)錯(cuò)說
org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'roleServiceImpl' for bean class [com.example.service.RoleServiceImpl] conflicts with existing, non-compatible bean definition of same name and class [com.example.roleService.RoleServiceImpl]
意思是:
以Bean名字‘roleServiceImpl’注解的類[com.example.service.RoleServiceImpl]與存在的不相容的同名類[com.example.roleService.RoleServiceImpl]相沖突。
原來是在這兩個(gè)實(shí)現(xiàn)類上面都只用了@service這個(gè)注解,根據(jù)映射規(guī)則,這兩個(gè)service都映射為了roleServiceImpl,發(fā)生了沖突。
解決辦法
- 1.將其中一個(gè)實(shí)現(xiàn)類改為不同的名字;
- 2.將其中一個(gè)注解變更為一個(gè)name為非roleServiceImpl的注解@service(name="aaaa")。
再次啟動(dòng),OK。
springboot不同包下同名文件,啟動(dòng)時(shí)報(bào)重名錯(cuò)誤的解決
錯(cuò)誤信息:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.***.***.StarterApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'discussController' for bean class [com.***.***.controller.wechat.DiscussController] conflicts with existing, non-compatible bean definition of same name and class [com.***.***.controller.web.DiscussController]
本人遇到這種問題,搞了半天,頭疼。
搜來的解決辦法
1:加:@Controller("rename") ,感覺太繁瑣。
2、重新定義Bean的命名策略,結(jié)果不起作用。
就請教了我司大牛,大牛一通操作,給出了完美解決方法,在這里感謝這位老師,也分享出來哈哈。
解決辦法
1、升級spring boot到2.2.7 升級spring到5.2.3以上
(我之前用的5.2.2,就差一個(gè)版本,就沒有FullyQualifiedAnnotationBeanNameGenerator)
2、StarterApplication中添加
@ComponentScan(value = {"com.**.**.spring", ……(此處可配置多個(gè)包)}, ? ? ? ? nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class)
完美!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
idea快速實(shí)現(xiàn)將SpringBoot項(xiàng)目打包Docker鏡像并部署
本文主要介紹了idea快速實(shí)現(xiàn)將SpringBoot項(xiàng)目打包Docker鏡像并部署,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04SWT(JFace)體驗(yàn)之模擬BorderLayout布局
SWT(JFace)體驗(yàn)之模擬BorderLayout布局代碼。2009-06-06使用SpringBoot開發(fā)Restful服務(wù)實(shí)現(xiàn)增刪改查功能
Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。這篇文章主要介紹了基于SpringBoot開發(fā)一個(gè)Restful服務(wù),實(shí)現(xiàn)增刪改查功能,需要的朋友可以參考下2018-01-01關(guān)于fastjson的@JSONField注解的一些問題(詳解)
下面小編就為大家?guī)硪黄P(guān)于fastjson的@JSONField注解的一些問題(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02Spring Cloud中使用Feign,@RequestBody無法繼承的解決方案
這篇文章主要介紹了Spring Cloud中使用Feign,@RequestBody無法繼承的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10Intellij?IDEA創(chuàng)建web項(xiàng)目的超詳細(xì)步驟記錄
如果剛開始接觸IDEA,或者之前使用的是eclipse/myEclipse的話,即使是創(chuàng)建一個(gè)JAVA WEB項(xiàng)目,估計(jì)也讓很多人費(fèi)了好幾個(gè)小時(shí),下面這篇文章主要給大家介紹了關(guān)于Intellij?IDEA創(chuàng)建web項(xiàng)目的超詳細(xì)步驟,需要的朋友可以參考下2022-08-08Springboot項(xiàng)目基于Devtools實(shí)現(xiàn)熱部署步驟詳解
這篇文章主要介紹了Springboot項(xiàng)目基于Devtools實(shí)現(xiàn)熱部署,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06SpringMVC深入講解文件的上傳下載實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了springMVC實(shí)現(xiàn)文件上傳和下載的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06