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项目。在不同的包下,建立两个名字一样的类,如图:
然后注入这两个类,并启动,代码如下:
@Service
public class Context {
@Autowired
private TestSpring testSpring1;
@Autowired
private com.test.mybatis.context.package2.TestSpring testSprin