我有第一包:
xxx.yyy.zzz {
SampleClass1.java
}第二组:
xxx.yyy.zzz {
SampleClass2.java
}第三包:
aaa.bbb.ccc {
TopClass.java
}在TopClass中,我使用组件扫描,这样就可以从包2加载类,因为我想要@Autowire SampleClass2.java。但是,使用组件扫描,它尝试引入SampleClass1.java,因为它们具有相同的包名。在执行此操作时,它会导致大量错误,因为SampleClass1 (我不需要这些错误)需要满足额外的依赖bean。
如何在不面临SampleClass1.java冲突的情况下@Autowire SampleClass2.java?
发布于 2018-10-24 18:39:06
我的意思是包头是相同的,这引起了一个问题:
(文件顶部的)
package xxx.yyy.zzz;我能够这样解决这个问题:
@ComponentScan(basePackageClasses =
{
SampleClass2.class,
},
useDefaultFilters = false,
includeFilters = {@ComponentScan.Filter(
type = FilterType.ASSIGNABLE_TYPE,
value = {
SampleClass2.class,
})
})这种类型的组件扫描严格接受必要的类,而不考虑其他依赖项。
发布于 2018-08-21 01:43:16
根据我的理解,不可能有两个名称相同的包,而是有两个类的同一个包。因此,您的包和类的结构如下:
xxx.yyy.zzz{ SampleClass2.java, SampleClass1.java }
这意味着当您在包上使用组件扫描时,您将加载两个类。如果是这样的话:
SampleClass1.java作为一个组件删除,这意味着您不能在需要它的地方自动生成SampleClass1.java。https://stackoverflow.com/questions/51940381
复制相似问题