java - 使用 Package 限制 Autowiring 组件的集合

标签 java spring collections filter autowired

我正在开发一个使用 Chains of Responsibility 解析文件的项目。名为EntityMapper的抽象类的用于解析。目前我们有两种类型的文件/实体:

  • GrantEntity
  • BillEntity

全部EntityMappers扩展抽象类:

public abstract class EntityMapper<T extends AbstractBaseEntity> implements Function<MapperExchange, T>

很快我们就会有 DonationEntity这将表示一个具有某些结构特征的文件,如 grantEntity

而不是创建新的 Type 类扩展 EntityMapper<DonationEntity>我想问有没有办法过滤@AutoWired使用package names收集或regex .

类似?:

@Autowired
@ComponentScan("com.my.package.first,com.my.package.second")
private List<EntityMapper<GrantEntity>> entityMappers;

不幸的是,除了手动完成并从集合中删除元素之外,我没有在下面的链接中找到答案:

最佳答案

您可以使用@Qualifer注释来指示逻辑上相似的组件。然后为注入(inject)目标指定匹配的@Qualifier。例如

class DependencyToInject{
}

@Configuration
public class AppConfig{

    @Bean
    @Qualifier("main")
    public DependencyToInject dependency1(){
       //return instance
    }

    @Bean
    @Qualifier("main")
    public DependencyToInject dependency2(){
       //return instance
    }

    @Bean
    @Qualifier("sub")
    public DependencyToInject dependency3(){
       //return instance
    }
}

@Component
public class DependentClass{

  @Autowired
  @Qualifier("main")
  private List<DependencyToInject> mainList;

  @Autowired
  @Qualifier("sub")
  private List<DependencyToInject> subList;

}

关于java - 使用 Package 限制 Autowiring 组件的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36336367/

相关文章:

java - 如何在 Grails 框架中获取 GSP 中的不同列表

java - 跟踪 Java 中异步回调的结果

java - Spring 应用程序在 Tomcat 上部署失败 : whats wrong with applicationContext?

java - 从 Spring JAR 读取文件

java - 具有重复项的 "containsAll"的行为

java - Spring组件中如何访问HttpServletResponse?

java - 如何在 Liferay 7.2 中使用 DynamicQuery 查询 JournalArticle 的最新版本

c# - 使用 Next() 收集

mysql - 调整 SQL 行以包含集合

java - android sqlite 异常 : column 'satze' does not exist