解决springboot生成bean名称冲突(AnnotationBeanNameGenerator)
作者:生产队队长 时间:2023-01-09 22:27:11
springboot生成bean名称冲突
问题描述
我们再使用springboot的时候,在不同的文件目录下,可能存在相同名称的java类,这个时候会报bean name冲突错误
首先我们来了解下,springboot生成bean名称的原理
当Component,Respository,Service,Controller注解的value树形没有自定义时,会根据类的名称生成一个短的bean name。例如: com.xyz.FooServiceImpl -> fooServiceImpl
也就是说,会忽略路径,生成首字母小写的bean name,所以,上面哪种情况会导致冲突
但是由于我们平时编码的习惯,几乎避免了这个重名文件的存在,所以,没遇到过这个错误
解决问题
使用自定义AnnotationBeanNameGenerator
@SpringBootApplication
@RestController
@ComponentScan(nameGenerator = DatabasesApplication.SpringBeanNameGenerator.class)
public class DatabasesApplication {
public static class SpringBeanNameGenerator extends AnnotationBeanNameGenerator {
@Override
protected String buildDefaultBeanName(BeanDefinition definition) {
return definition.getBeanClassName();
}
}
public static void main(String[] args) {
SpringApplication.run(DatabasesApplication.class, args);
}
@GetMapping("/hello")
public String hello(){
return "hello databases!";
}
}
我是在做springboot实现多数据源时还有个其他地方使用
MapperScan注解中使用
@MapperScan(basePackages = "com.databases.databases.dao.one", sqlSessionFactoryRef = "oneSqlSessionFactory",nameGenerator = DatabasesApplication.SpringBeanNameGenerator.class)
自定义bean对象重名问题
在已经有对象的情况下,设置bean加载的时候注意不要重名
不然启动不了,会给你提示在配置文件中添加spring.main.allow-bean-definition-overriding=true 这个东西的意思是当有重名bean的时候覆盖上一个,不建议使用,毕竟每个bean对象都是独特的
来源:https://blog.csdn.net/Brave_heart4pzj/article/details/106527849
标签:springboot,bean,名称冲突
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
公共POI导出Excel方法详解
2023-09-10 22:51:31
![](https://img.aspxhome.com/file/2023/3/94213_0s.png)
Flutter进阶之实现动画效果(六)
2023-09-15 15:13:50
SpringBoot深入了解日志的使用
2023-01-06 15:40:34
![](https://img.aspxhome.com/file/2023/7/65177_0s.png)
Android仿今日头条APP实现下拉导航选择菜单效果
2023-09-15 07:21:05
![](https://img.aspxhome.com/file/2023/3/130413_0s.jpg)
C#图形区域剪切的实现方法
2021-09-12 10:15:50
C# Dynamic关键字之:dynamic为什么比反射快的详解
2021-06-24 04:22:35
![](https://img.aspxhome.com/file/2023/8/129688_0s.jpg)
OpenGL Shader实现光照发光体特效
2022-03-16 18:51:50
![](https://img.aspxhome.com/file/2023/5/101865_0s.png)
C#实现Array,List,Dictionary相互转换
2022-10-09 13:51:39
![](https://img.aspxhome.com/file/2023/3/69223_0s.png)
java原生序列化和Kryo序列化性能实例对比分析
2023-11-26 16:04:20
用Java程序判断是否是闰年的简单实例
2022-10-13 23:04:30
使用SpringMVC响应json格式返回的结果类型
2022-06-29 20:29:46
![](https://img.aspxhome.com/file/2023/7/90957_0s.png)
Springboot项目打war包docker包找不到resource下静态资源的解决方案
2022-01-01 07:03:55
C#实现通过程序自动抓取远程Web网页信息的代码
2023-12-04 22:56:46
Java数组(Array)最全汇总(中篇)
2022-09-05 06:01:02
![](https://img.aspxhome.com/file/2023/8/63638_0s.jpg)
使用Http Head方法获取文件长度的实现方法详解
2023-04-05 01:50:37
c#保存窗口位置大小操作类(序列化和文件读写功能)
2023-07-15 18:51:06
Java线程池源码的深度解析
2023-10-02 19:33:40
![](https://img.aspxhome.com/file/2023/6/66636_0s.jpg)
C#添加、读取Word脚注尾注的方法
2022-12-24 02:12:22
![](https://img.aspxhome.com/file/2023/2/100152_0s.png)
Java中Excel高效解析工具EasyExcel的实践
2023-05-28 13:36:38
![](https://img.aspxhome.com/file/2023/9/86059_0s.webp)
Android之Spinner用法详解
2022-10-05 00:57:17