如何通过双引用创建bean?

时间:2017-07-04 08:38:38

标签: java spring javabeans

我不知道如何首先明确表达/搜索问题。

所以初始化的bean是:

<bean id='domain' factory-bean='appConfig' factory-method='getDomain'/
<bean id='prod' class='java.lang.String'> <constructor-arg value='Base.Prod'/> </bean>
<bean id='test' class='java.lang.String'> <constructor-arg value='Base.Beta' /> </bean>

现在我需要使用Prod或Test的值创建一个bean“X”,具体取决于domain的值。如果domain是Prod,使用Prod的bean初始化bean X,否则使用Test。

$ {$ {domain}}不起作用。我试过搜索,但无法找到一个意味着这个的问题。

3 个答案:

答案 0 :(得分:1)

这将有效

@Value("${domain}")
private String domain;

结合

-Ddomain=dev

Spring将所有系统属性添加到从属性文件中读取的属性。

答案 1 :(得分:1)

@ EssexBoy在XML中的答案看起来像这样:

<bean id="domain" class="java-lang.String">
    <constructor-arg>
        <value>${domain}</value>
    </construcotr-arg>
</bean>

答案 2 :(得分:0)

终于找到了答案。有一种方法可以通过域引用test / prod bean。你只需要使用#{domain}。更多信息请访问:spEL

将其用作:

<bean id="ThatBean" class="whicheverClass">   
 <constructor-arg ref="#{domain}" /> 
</bean>