有没有什么方法可以在spring中命名同名bean组。例如,我有Bean A,B,C,D,EI应该能够加载bean A,B,C名称为group1,加载bean D,E的名称为group2。命名组名称相同的豆
0
A
回答
0
您可以通过将@Qualifier("mySpecialImplementation")
添加到@Autowire
字段来指定加载了哪个接口实现。因此,您的实施需要标记为@Component("mySpecialImplementation")
。
所以基本上你是分配一个唯一的(字符串)标识符到你的具体实现。要加载特殊实现,请使用Qualifier批注指定其ID。
如果您确实需要加载一组“bean”:只需创建一个新的“group-bean”,其中包含要在该组中加载的所有bean的自动连线字段。如果您现在注入新的“组bean”,组中的所有其他bean也将被加载。
例子:
@Autowire
ApplicationContext context;
List<Object> loadBeanGroup(List<String> beanNames){
List<Object> result = new LinkedList<>();
for(String name: beanNames){
result.add(context.getBean(name));
}
return result;
}
所以你基本上是:通过
@Autowired
Group1 group1;
如果你真的需要加载一个列表,而不是某种预定组的
@Service
class Group1 {
@Autowired
private A a;
@Autowired
private B b;
@Autowired
private C c;
...
}
@Service
class Group2 {
@Autowired
private D d;
@Autowired
private E e;
...
}
加载可以用bean名称(你的组)来定义一个字符串列表。并加载列表中的所有bean。
相关问题
- 1. 合同名称与命名空间名称相同,有什么大不了的?
- 2. 不同命名空间中的相同函数名称
- 3. 重命名具有相同名称但扩展名不同的文件
- 4. 重命名具有相同名称的文件
- 5. 重命名所有具有相同基本名称的文件
- 6. Laravel - 命名路由(GET,POST,DELETE)是否有相同的名称?
- 7. 为相同名称的图层和方法命名
- 8. 命名空间相同的名称,功能
- 9. PHP命名空间 - 声明具有相同名称的类
- 10. 移动并重命名相同名称的文件
- 11. iOS - 相同的.app名称
- 12. 从相同名称的包中引用不同类的相同名称
- 13. 熊猫在名称相同且名称不同的情况下转换名称?
- 14. 无豆命名,但豆定义
- 15. 类应该与命名空间名称相同吗?
- 16. 命名类和名称空间是否相同?
- 17. 命名元组的名称和引用可以不同吗?
- 18. 命名命名空间具有相同的类名
- 19. 名称相同,但在C
- 20. 具有相同名称
- 21. 具有相同名称
- 22. 在Perforce中,您可以将文件夹重命名为相同的名称,但使用不同的名称?
- 23. 相同命名空间中的相同类名
- 24. Web api 2相同的方法名称和相同的参数名称
- 25. 命名伊娃与类名相同
- 26. 在不同命名空间中处理相同元素名称的JAXB注释
- 27. DisplayFor无法使用具有不同命名空间的相同型号名称
- 28. 使用两个具有相同名称和相同名称空间的DLL
- 29. 访问具名命名空间的成员当外部命名空间具有相同名称
- 30. Vim热键的相应命令名称
也许你可以创建一个注入其他bean然后加载它的bean组1?客体是什么? – DamienB
什么是客观的? – pppavan
你为什么要这样做?有理由吗?还是仅仅通过单个条目调用多个bean? – DamienB