gpt4 book ai didi

java - 使用 System 属性更改 spring bean 别名

转载 作者:行者123 更新时间:2023-12-04 05:33:14 25 4
gpt4 key购买 nike

我试图弄清楚是否可以通过系统属性更改 spring 别名配置。

那是配置:

<beans>
<bean id="beanOne" ... />
<bean id="beanTwo" ... />
<bean id="beanThree" ... />
<alias name="beanOne" alias="beanToUse" />

<bean id="consumer" ...>
<constructor-arg ref="beanToUse" />
</bean>
</beans>

我希望能够使用 JVM 属性,例如与 -Duse=beanThree为别名选择另一个 bean。

不幸的是使用直接的解决方案 <alias name="#{systemProperties.use}" alias="beanToUse" />抛出 NoSuchBeanDefinitionException异常(exception):(

有什么建议吗?

最佳答案

您是否尝试使用 spring 3.1 配置文件?

<beans>
<bean id="beanOne" ... />
<bean id="beanTwo" ... />
<bean id="beanThree" ... />
<beans profile="A">
<alias name="beanOne" alias="beanToUse" />
</beans>

<beans profile="B">
<alias name="beanTwo" alias="beanToUse" />
</beans>

<bean id="consumer" ...>
<constructor-arg ref="beanToUse" />
</bean>
</beans>

并通过系统属性选择 -Dspring.profiles.active=A .我没有在配置文件中尝试过别名,但你可以有其他选择 beanToUse每个配置文件中的定义:
<beans>
<beans profile="A">
<bean id="beanToUse" ... defined as beanOne ... />
</beans>

<beans profile="B">
<bean id="beanToUse" ... defined as beanTwo .../>
</beans>

<bean id="consumer" ...>
<constructor-arg ref="beanToUse" />
</bean>
</beans>

关于java - 使用 System 属性更改 spring bean 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12315589/

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