java - 如何使用 @ComponentScan 排除两个同名包之一?

标签 java spring annotations

我有包裹一:

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 作为组件删除,但这意味着您无法在需要的地方 Autowiring SampleClass1.java

关于java - 如何使用 @ComponentScan 排除两个同名包之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51940381/

相关文章:

Java自定义注解查找方法

java - Eclipse Step Over 未按预期工作 - Tomcat Web 应用程序调试

java - 如何仅将部分文本设为粗体

java - Linkify的clickable方法阻塞了listview的click方法

java - 无法配置数据源 : 'url' attribute is not specified and no embedded datasource could be configured. SPRING

java - @OneToOne(optional=false) 和@JoinColumn(nullable=false) 一起使用

java - 获取 mysql(innodb) AUTO_INCRMENT Column 的方式、JDBC/getGenerateKeys()/last_insert_id (OkPacket 中) 和 LAST_INSERT_ID()

spring - 使用 Jetty 以编程方式部署 servlet

Spring:new() 运算符和 Autowiring 在一起

java - Id 必须可分配给 Serialized With LAZY @ManyToOne