Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException Annotation 报错解决

标题# Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException Annotation 报错解决

springboot项目启动报错

前言

以下是本次报错的处理历程,如果你的项目也是在启动时报类名重复,希望我的处理方法对你有用。
报错信息如下

Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'shiroConfig' for bean class [cn.com.compass.web.hanlder.BaseExceptionHandle] conflicts with existing, non-compatible bean definition of same name and class [cn.com.compass.core.hanlder.BaseExceptionHandle]

原因:我的项目中有使用开源项目:compass,我的项目依赖树告诉我项目A依赖项目B,项目B依赖compass,项目通过Jenkins打包部署后就报这个错,其实项目中是没有使用到core这个包的。
首先,我先想到的就是而我在pom文件中对项目B的dependency添加排除compass的依赖但是不知道为什么不生效;
其次,我使用maven-shade-plugin插件对这个类进行单独排除,各种尝试各种查资料,结果项目启动各种报错;
最后我才使用@ComponentScan注解去排除这个类,使用方式如下:

@ComponentScan(basePackages={"cn.com.compass.core"},
		excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = {"cn.com.compass.core.handler.BaseExceptionHandler"}))
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}

}

@ComponentScan注解介绍

1、@ComponentScan注解的作用

@ComponentScan注解一般和@Configuration注解一起使用,主要的作用就是定义包扫描的规则,然后根据定义的规则找出哪些需类需要自动装配到spring的bean容器中,然后交由spring进行统一管理。

说明:针对标注了@Controller、@Service、@Repository、@Component 的类都可以别spring扫描到。

2、@ComponentScan注解属性介绍

2.1 value

指定要扫描的包路径

2.2 excludeFilters(排除规则)

excludeFilters=Filter[] 指定包扫描的时候根据规则指定要排除的组件

2.3 includeFilters(包含规则)

includeFilters =Filter[] 指定包扫描的时候根据规则指定要包含的组件.

注意:要设置useDefaultFilters = false(系统默认为true,需要手动设置) includeFilters包含过滤规则才会生效。

2.4 FilterType属性

FilterType.ANNOTATION:按照注解过滤

FilterType.ASSIGNABLE_TYPE:按照给定的类型,指定具体的类,子类也会被扫描到

FilterType.ASPECTJ:使用ASPECTJ表达式

FilterType.REGEX:正则

FilterType.CUSTOM:自定义规则

useDefaultFilters: 配置是否开启可以对加@Component,@Repository,@Service,@Controller注解的类进行检测, 针对Java8 语法可以指定多个@ComponentScan,Java8以下可以用 @ComponentScans() 配置多个规则

结束语

以上是本次报错的处理历程,如果你的项目也是在启动时报类名重复,希望我的处理方法对你有用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException报错是由于存在重复的bean定义***com.compass.core.hanlder.BaseExceptionHandle]不兼容。这个错误通常发生在Spring Boot项目启动时,当存在相同名称但不兼容的bean定义时会触发该异常。 为解决这个问题,可以考虑以下方法: 1.检查项目中的bean定义,确保没有重复的名称或类。可以使用IDE的搜索功能来查找所有包含问题bean名称的地方。 2.如果确实存在相同名称但不兼容的bean定义,可以通过更改bean名称或类名来解决冲突。 3.另外,你也可以使用@ComponentScan注解的excludeFilters属性来排除掉不需要的bean定义,或者使用includeFilters属性来只包含需要的bean定义。这样可以更精确地控制项目中的bean扫描。 综上所述,Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException报错是由于存在重复的bean定义导致的。解决这个问题的方法包括检查重复的bean定义并进行修正,以及使用@ComponentScan注解的excludeFilters和includeFilters属性进行精确控制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException Annotation 报错...](https://blog.csdn.net/weixin_42717648/article/details/128582047)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值