我有兴趣注入一个 bean 引用,它是根据同一 bean 上的另一个属性解析的:
@Autowired
@Qualifier("#{'prefix' + actualQualifier}")
private OtherBean otherBean
private String actualQualifier;
这将确保“actualQualifier”和“otherBean”之间的关系是正确的。
配置了许多该类型的 beanOtherBean
.
我可以确保“actualQualifier”在自动装配/注入开始之前设置了一个值。
我无法找到任何方法来引用当前正在自动装配的同一 bean 上的另一个属性值(在 JavaBean 意义上)。
AFAIK,这是行不通的。 SpEL 无法访问封闭类的变量。不管怎样,它看起来像@Qualifier
不处理 SpEL 表达式。
我做了一些测试,但从未找到如何使用 SpEL 表达式作为@Qualifier
value. 这一页 http://forum.spring.io/forum/spring-projects/container/130370-does-qualifier-work-with-properties-set-using-spring-3-profiles来自 Spring 论坛(以及来自 Spring 的错误消息)让我认为事实上@Qualifier
只接受一个字符串并且不尝试计算 SpEL 表达式。
我的结论是,这条路会把你带进死胡同。
正如其他中所建议的answer https://stackoverflow.com/a/18216722/3545273,我认为你最好使用选择器 bean 并设置otherBean
在 init 方法中:
@Bean(initMethod="init")
class MyBean {
...
@Autowired
private BeanSelector beanSelector;
private OtherBean otherBean
private String actualQualifier;
public void init() {
otherBean = beanSelector(actualQualifier);
}
...
}
并把所有关于选择的情报otherBean
in beanSelector
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)