Annotation-specified bean name for bean class
1、发现BUG:bug详情严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListenerorg.springframework.context.annotation.ConflictingBeanDe
文章共653字 · 阅读需要大约3分钟
一键AI生成摘要,助你高效阅读
问答
·
1、发现BUG:bug详情
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'function' for bean class [com.google.common.base.Function] conflicts with existing, non-compatible bean definition of same name and class [com.alibaba.druid.sql.visitor.functions.Function]
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.checkCandidate(ClassPathBeanDefinitionScanner.java:320)
at org.mybatis.spring.mapper.ClassPathMapperScanner.checkCandidate(ClassPathMapperScanner.java:223)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:259)
at org.mybatis.spring.mapper.ClassPathMapperScanner.doScan(ClassPathMapperScanner.java:155)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.scan(ClassPathBeanDefinitionScanner.java:226)
at org.mybatis.spring.mapper.MapperScannerConfigurer.postProcessBeanDefinitionRegistry(MapperScannerConfigurer.java:315)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:123)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:678)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:520)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1247)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1898)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
十月 28, 2020 11:56:41 上午 org.apache.catalina.core.StandardContext startInternal
严重: Error listenerStart
十月 28, 2020 11:56:41 上午 org.apache.catalina.core.StandardContext startInternal
严重: Context [/TestModel] startup failed due to previous errors
十月 28, 2020 11:56:41 上午 org.apache.catalina.core.ApplicationContext log
2、确认BUG:
大致意思就是Spring Bean管理的对象名称重复了,也就是说有两个类的名字相同。 由于Spring是在注解下按配置扫描的方式去创建对象的,那么会导致两个重名的注解不成立了,所以会报错
3、寻找根源:
由于bug可知,是注解扫描时出现了问题,那么我们查看注解的配置信息
4、分析
由于我们需要注解的类在我们自己创建的com包下,所以我们给的自动扫描包为com。但这会使系统去扫描所有com下的对象,包含但不限于jar包中带的一些内容,这就会导致出现以上问题
5、修复
调整自建的包名,以2种方式为例
(1)在com后面多加一个test
(2)修改com为test
更多推荐
已为社区贡献11条内容
所有评论(0)