我有包裹一:
xxx.yyy.zzz {
SampleClass1.java
}
和包二:
xxx.yyy.zzz {
SampleClass2.java
}
并打包三个:
aaa.bbb.ccc {
TopClass.java
}
在 TopClass 中,我使用组件扫描,这样我就可以从 Package 2 中加载类,因为我想要 @Autowire SampleClass2.java。但是,使用组件扫描,它会尝试引入 SampleClass1.java,因为它们具有相同的包名称。执行此操作时,它会导致一堆错误,因为我不需要 SampleClass1,因此需要满足额外的依赖项 bean。
如何 @Autowire SampleClass2.java 而不面临来自 SampleClass1.java 的冲突?
最佳答案
根据我的理解,不能有两个同名的包,它会是具有两个类的同一个包。 所以你的包和类的结构如下:
xxx.yyy.zzz{
示例类2.java,
SampleClass1.java
}
这意味着当您在包上使用组件扫描时,您将加载这两个类。 如果是这种情况,那么:
- 我建议要么将它们分开在不同的包中。或
- 将
SampleClass1.java
作为组件删除,但这意味着您无法在需要的地方 AutowiringSampleClass1.java
。
关于java - 如何使用 @ComponentScan 排除两个同名包之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51940381/