有没有什么方法可以在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. 重命名所有具有相同基本名称的文件
- 7. 重命名具有相同名称的文件
- 8. 命名空间和具有相同名称的类?
- 9. PHP命名空间 - 声明具有相同名称的类
- 10. 移动并重命名相同名称的文件
- 11. 重命名TFS 2010分支,使得在相同的名称
- 12. Laravel - 命名路由(GET,POST,DELETE)是否有相同的名称?
- 13. 命名空间相同的名称,功能
- 14. 命名与另一个库具有相同名称的库
- 15. 无豆命名的AuthenticationManager
- 16. 相同的HTML.CheckBox名称MVC3
- 17. iOS - 相同的.app名称
- 18. 从相同名称的包中引用不同类的相同名称
- 19. 熊猫在名称相同且名称不同的情况下转换名称?
- 20. 无豆命名,但豆定义
- 21. 命名类和名称空间是否相同?
- 22. VBS将文件重命名为与文件夹名称相同
- 23. 类应该与命名空间名称相同吗?
- 24. 命名元组的名称和引用可以不同吗?
- 25. 命名命名空间具有相同的类名
- 26. 重命名Dynamics CRM组织名称
- 27. 简单的XML和名称相同,但不同的命名空间
- 28. 命名对象相同,但在不同的命名空间中
- 29. 名称相同,但在C
- 30. 具有相同名称
也许你可以创建一个注入其他bean然后加载它的bean组1?客体是什么? – DamienB
什么是客观的? – pppavan
你为什么要这样做?有理由吗?还是仅仅通过单个条目调用多个bean? – DamienB