java引用不同包下同名类_spring框架对于不同包下同名类的查找问题

本文介绍了在Spring框架中遇到不同包下同名类导致的冲突问题。作者通过模拟场景重现问题,并分析了Spring的BeanDefinition和beanName生成策略。最后总结了Spring不支持此类设定的原因及规避冲突的两种方法:显式命名bean或使用XML声明bean。
摘要由CSDN通过智能技术生成

1 问题背景

由于厌倦了java里面冗长的命名方式,因此最近开始将文件名尽量的缩短。信息尽量通过包名来一层层描述。

这样使用了一段时间,都没有什么问题,而且idea面板也清爽了很多。

近日按这种简略的类名的方式重构一份历史代码,编译没有问题,启动了时候报了这样一个错误:

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException:

Failed to parse configuration class [com.test.mybatis.DemoApplication];

nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException:

Annotation-specified bean name 'testSpring' for bean class [com.test.mybatis.context.package2.TestSpring]

conflicts with existing, non-compatible bean definition of same name and class [com.test.mybatis.context.package1.TestSpring]

简单说,就是有不同包下的类重名了。

2 问题复现

首先是模拟这种场景,我们启动一个springboot项目。在不同的包下,建立两个名字一样的类,如图:

a4ae1baf5015

然后注入这两个类,并启动,代码如下:

@Service

public class Context {

@Autowired

private TestSpring testSpring1;

@Autowired

private com.test.mybatis.context.package2.TestSpring testSprin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值