我有很多ServiceImpl bean,但是我想通过它的默认名称访问特定的bean,比如
class SuperServiceImpl {}
class UserServiceImpl extends SuperServiceImpl {}
class PlaceServiceImpl extends SuperServiceImpl {}
public SuperServiceImpl getServiceImpl(String qualifierName) {
// if qualifierName="userServiceImpl"
// return UserServiceImpl
}
我尝试实施以下解决方案
但我没有在getBean()
引用上获得ApplicationContext
方法。
答案 0 :(得分:2)
return applicationContext.getBean(qualifierName, SuperServiceImpl.class)
您可能希望为SuperServiceImpl
定义一个界面,而使用return applicationContext.getBean(qualifierName, SuperService.class)
代替,尤其是如果您有多个实现。
当然,为了完成这项工作,您需要正确定义bean:
id
元素bean
属性
name
注释@Bean
属性覆盖该值
答案 1 :(得分:1)
找到最简单的解决方案..
1)我自动连接了ApplicationContext
2)将默认限定符名称传递给方法getBean(defaultQualifierName)
多数民众赞成......
感谢各位帮助我。