gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:45:40 28 4
gpt4 key购买 nike

我正在开发一个使用 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com