亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot2基于重復創(chuàng)建bean的問題及解決

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

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

今天在跑程序的時候報了一個重復創(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這個bean在創(chuàng)建時重復了,springboot的自動裝配和我的程序同時創(chuàng)建了相同類型的bean。

之所以報這個異常是因為在Spring2中增加了防止bean重復覆蓋的策略,如果有重復則會直接報出異常,而不是像從前一樣默默覆蓋,導致你的bean被莫名替換,難以排查問題。

stackoverflow上的解答如下:

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

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

@SpringBootApplication(exclude = TransactionAutoConfiguration.class)

Spring注入Bean細節(jié)--解決Bean名稱重復問題

問題描述:

org.springframework.context.annotation.ConflictingBeanDefinitionException

問題原因:

在使用注解配置Bean的過程中,存在名稱相同的情況,導致項目啟動失敗

解決辦法

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

在mapper中使用@Repository注解來指定別名

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

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

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

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

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

@Service("DepartmentService2")

對應(yīng)Controller

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

心得

在配置Bean的過程中所指定的別名相當于以往XML中Bean屬性id的值

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

再復習@Resource這個注解

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

總結(jié)

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

相關(guān)文章

  • Java Spring詳解如何配置數(shù)據(jù)源注解開發(fā)以及整合Junit

    Java Spring詳解如何配置數(shù)據(jù)源注解開發(fā)以及整合Junit

    Spring 是目前主流的 Java Web 開發(fā)框架,是 Java 世界最為成功的框架。該框架是一個輕量級的開源框架,具有很高的凝聚力和吸引力,本篇文章帶你了解如何配置數(shù)據(jù)源、注解開發(fā)以及整合Junit
    2021-10-10
  • Java工程的Resources目錄從基礎(chǔ)到高級應(yīng)用深入探索

    Java工程的Resources目錄從基礎(chǔ)到高級應(yīng)用深入探索

    這篇文章主要介紹了Java工程中的resources目錄,從基礎(chǔ)概念到高級應(yīng)用,涵蓋了如何創(chuàng)建、使用以及資源文件的加載方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • MyBatis中useGenerateKeys的使用解析

    MyBatis中useGenerateKeys的使用解析

    這篇文章主要介紹了MyBatis中useGenerateKeys的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Mybatis-Plus中Mapper的接口文件與xml文件相關(guān)的坑記錄

    Mybatis-Plus中Mapper的接口文件與xml文件相關(guān)的坑記錄

    這篇文章主要介紹了Mybatis-Plus中Mapper的接口文件與xml文件相關(guān)的坑記錄,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 在Docker中部署Spring Boot項目過程詳解

    在Docker中部署Spring Boot項目過程詳解

    這篇文章主要介紹了在Docker中部署Spring Boot項目,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 詳解Java設(shè)計模式編程中的策略模式

    詳解Java設(shè)計模式編程中的策略模式

    這篇文章主要介紹了詳解Java設(shè)計模式編程中的策略模式,策略模式強調(diào)對對象的封裝使用,比如文中舉的錦囊妙計的例子便很生動,需要的朋友可以參考下
    2016-02-02
  • SpringBoot項目引入MCP的實現(xiàn)示例

    SpringBoot項目引入MCP的實現(xiàn)示例

    本文主要介紹了SpringBoot項目引入MCP的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-04-04
  • JAVA進階篇之詳細了解File文件的常用API

    JAVA進階篇之詳細了解File文件的常用API

    這篇文章主要給大家介紹了關(guān)于JAVA進階篇之詳細了解File文件的常用API的相關(guān)資料,File用于表示文件系統(tǒng)中的一個文件或目錄,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • Java日志組件間關(guān)系詳解

    Java日志組件間關(guān)系詳解

    在本文里我們給大家整理了關(guān)于Java日志組件間關(guān)系相關(guān)基礎(chǔ)知識,需要的朋友們跟著學習下。
    2019-02-02
  • Java8 LocalDateTime極簡時間日期操作小結(jié)

    Java8 LocalDateTime極簡時間日期操作小結(jié)

    這篇文章主要介紹了Java8-LocalDateTime極簡時間日期操作整理,通過實例代碼給大家介紹了java8 LocalDateTime 格式化問題,需要的朋友可以參考下
    2020-04-04

最新評論