最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot2基于重復(fù)創(chuàng)建bean的問(wèn)題及解決

 更新時(shí)間:2023年06月20日 10:29:37   作者:普通網(wǎng)友  
這篇文章主要介紹了SpringBoot2基于重復(fù)創(chuàng)建bean的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringBoot2重復(fù)創(chuàng)建bean的解決

今天在跑程序的時(shí)候報(bào)了一個(gè)重復(fù)創(chuàng)建事務(wù)的異常:

***************************
APPLICATION FAILED TO START
***************************

Description:

The bean ‘org.springframework.transaction.config.internalTransactionAdvisor’, defined in class path resource [org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.class], could not be registered. A bean with that name has already been defined and overriding is disabled.

Action:

Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

是ProxyTransactionManagementConfiguration.class這個(gè)bean在創(chuàng)建時(shí)重復(fù)了,springboot的自動(dòng)裝配和我的程序同時(shí)創(chuàng)建了相同類型的bean。

之所以報(bào)這個(gè)異常是因?yàn)樵赟pring2中增加了防止bean重復(fù)覆蓋的策略,如果有重復(fù)則會(huì)直接報(bào)出異常,而不是像從前一樣默默覆蓋,導(dǎo)致你的bean被莫名替換,難以排查問(wèn)題。

stackoverflow上的解答如下:

原文地址:https://stackoverflow.com/questions/51367566/trouble-when-changing-spring-boot-version-from-2-0-3-release-to-2-1-0-build-snap

我這邊程序的解決方案是忽略spring的自動(dòng)裝配,禁止TransactionAutoConfiguration即可:

@SpringBootApplication(exclude = TransactionAutoConfiguration.class)

Spring注入Bean細(xì)節(jié)--解決Bean名稱重復(fù)問(wèn)題

問(wèn)題描述:

org.springframework.context.annotation.ConflictingBeanDefinitionException

問(wèn)題原因:

在使用注解配置Bean的過(guò)程中,存在名稱相同的情況,導(dǎo)致項(xiàng)目啟動(dòng)失敗

解決辦法

1)在配置實(shí)例化注解時(shí),指定別名

在mapper中使用@Repository注解來(lái)指定別名

//項(xiàng)目其他包中也存在相同的類名稱DepartmentMapper,這里使用value來(lái)指定別名
//正常情況下,因?yàn)榕渲梦募幸呀?jīng)配置了mapper包的掃描,所以可以省略@Repository注解,如果發(fā)生上述沖突,考慮使用別名來(lái)解決
@Repository(value="DepartmentMapper2")
public interface DepartmentMapper {
?? ?//此處省略各種CRUD方法
}

2)在Service中指定所依賴的mapper

//這里也指定了service的別名
@Service(value="DepartmentService2")
public class DepartmentServiceImpl implements DepartmentService{
?? ?//這里指定依賴哪一個(gè)Mapper,默認(rèn)情況下使用ByName按類名來(lái)指定
?? ?@Resource(name="DepartmentMapper2")
?? ?private DepartmentMapper departmentMapper;
?? ?//省略各種service方法
}?? ?

如果service的類名也沖突了怎么辦?

在service中,使用@Service配置在實(shí)現(xiàn)類上,如果指定別名,可以利用value屬性來(lái)指定,另外,@Service中默認(rèn)括號(hào)中的字符串即是value的值,所以value可以省略

@Service("DepartmentService2")

對(duì)應(yīng)Controller

@Resource(name="DepartmentService2")
private DepartmentService departmentService;

心得

在配置Bean的過(guò)程中所指定的別名相當(dāng)于以往XML中Bean屬性id的值

<bean id="beanname" class="xxx.xxx.Xxx"></bean>

再?gòu)?fù)習(xí)@Resource這個(gè)注解

//@Resource注入順序: 1.同時(shí)指定name和type,那么按照byname和bytype匹配唯一符合條件的bean裝配
// ? ? ? ? ? ? ? ? ? 2.指定name或者type,則按照指定方式匹配,默認(rèn)按name匹配,一旦指定type則不再使用屬性名匹配
// ? ? ? ? ? ? ? ? ? 3.如果都不指定,則按照屬性名(屬性名為類名首字母小寫(xiě))匹配,如果沒(méi)有匹配到,按照屬性數(shù)據(jù)類型匹配
// ? ? ? ? ? ? ? ? ? 以上不匹配則拋出異常
//@Resource 默認(rèn)按照ByName注入Bean
//也就是尋找id為“DepartmentService”的Bean
@Resource
private DepartmentService departmentService;
//所以可以指定name屬性來(lái)改變默認(rèn)規(guī)則
//這樣就尋找id為“DepartmentService2”的Bean
@Resource(name="DepartmentService2")
private DepartmentService departmentService;
//也可以那個(gè)指定class來(lái)使用ByType注入
@Resource(type=DepartmentService.class)
private DepartmentService departmentService;
//注意import時(shí)要導(dǎo)正確的包

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Spring Boot配置文件之多環(huán)境配置

    詳解Spring Boot配置文件之多環(huán)境配置

    本篇文章主要介紹了詳解Spring Boot配置文件之多環(huán)境配置 ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • java?Spring?Boot的介紹與初體驗(yàn)

    java?Spring?Boot的介紹與初體驗(yàn)

    大家好,本篇文章主要講的是java?Spring?Boot的介紹與初體驗(yàn),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Java util.List如何實(shí)現(xiàn)列表分段處理

    Java util.List如何實(shí)現(xiàn)列表分段處理

    這篇文章主要介紹了Java util.List如何實(shí)現(xiàn)列表分段處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java中String對(duì)象的深入理解

    Java中String對(duì)象的深入理解

    String對(duì)象作為Java語(yǔ)言中重要的數(shù)據(jù)類型之一,是我們平時(shí)編碼最常用的對(duì)象之一,因此也是內(nèi)存中占據(jù)空間最大的一個(gè)對(duì)象,然而很多人對(duì)它是一知半解,今天我們就來(lái)好好聊一聊這個(gè)既熟悉又陌生的String,需要的朋友可以參考下
    2023-05-05
  • SpringBoot淺析緩存機(jī)制之Ehcache?2.x應(yīng)用

    SpringBoot淺析緩存機(jī)制之Ehcache?2.x應(yīng)用

    EhCache?是一個(gè)純Java的進(jìn)程內(nèi)緩存框架,具有快速、精干等特點(diǎn)。它是Hibernate中的默認(rèn)緩存框架。Ehcache已經(jīng)發(fā)布了3.1版本。但是本文的講解基于2.x版本
    2022-08-08
  • java 非對(duì)稱加密算法RSA實(shí)現(xiàn)詳解

    java 非對(duì)稱加密算法RSA實(shí)現(xiàn)詳解

    這篇文章主要介紹了java 非對(duì)稱加密算法RSA實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 淺談Mybatis #和$區(qū)別以及原理

    淺談Mybatis #和$區(qū)別以及原理

    這篇文章主要介紹了淺談Mybatis #和$區(qū)別以及原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 關(guān)于任務(wù)調(diào)度框架quartz使用(異常處理,解決恢復(fù)后多次調(diào)度處理)

    關(guān)于任務(wù)調(diào)度框架quartz使用(異常處理,解決恢復(fù)后多次調(diào)度處理)

    這篇文章主要介紹了關(guān)于任務(wù)調(diào)度框架quartz使用(異常處理,解決恢復(fù)后多次調(diào)度處理),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • vscode快速引入第三方j(luò)ar包發(fā)QQ郵件

    vscode快速引入第三方j(luò)ar包發(fā)QQ郵件

    這篇文章主要介紹了vscode快速引入第三方j(luò)ar包發(fā)QQ郵件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Maven Optional依賴屬性的含義及妙用

    Maven Optional依賴屬性的含義及妙用

    這篇文章主要為大家介紹了Maven Optional依賴屬性的含義及妙用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評(píng)論

新野县| 黄梅县| 太湖县| 鹤壁市| 横山县| 宁城县| 华阴市| 偏关县| 定边县| 蓬溪县| 重庆市| 德阳市| 定远县| 延长县| 新乐市| 阳原县| 大连市| 临夏县| 宝清县| 玛曲县| 资中县| 漠河县| 岗巴县| 亚东县| 中方县| 抚宁县| 舞钢市| 澳门| 扶沟县| 宁国市| 深州市| 长岛县| 陵川县| 抚顺县| 正阳县| 南郑县| 库尔勒市| 南靖县| 太谷县| 莲花县| 泌阳县|