如何通过双重引用创建bean?
How to create bean by double reference?
我一开始不知道如何articulate/search这个问题。
所以初始化的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"。如果域是 Prod,则使用 Prod 的 bean 来初始化 bean X,否则使用 Test。
${${domain}} 不起作用。我尝试搜索但没能找到与此相关的问题。
这会起作用
@Value("${domain}")
private String domain;
结合
-Ddomain=dev
Spring 将任何系统属性添加到从属性文件中读取的属性。
@EssexBoy 在 XML 中的回答看起来像这样:
<bean id="domain" class="java-lang.String">
<constructor-arg>
<value>${domain}</value>
</construcotr-arg>
</bean>
终于找到答案了。有一种方法可以通过域引用 test/prod bean。您只需使用#{domain}。此处有更多信息:spEL
用作:
<bean id="ThatBean" class="whicheverClass">
<constructor-arg ref="#{domain}" />
</bean>
我一开始不知道如何articulate/search这个问题。
所以初始化的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"。如果域是 Prod,则使用 Prod 的 bean 来初始化 bean X,否则使用 Test。
${${domain}} 不起作用。我尝试搜索但没能找到与此相关的问题。
这会起作用
@Value("${domain}")
private String domain;
结合
-Ddomain=dev
Spring 将任何系统属性添加到从属性文件中读取的属性。
@EssexBoy 在 XML 中的回答看起来像这样:
<bean id="domain" class="java-lang.String">
<constructor-arg>
<value>${domain}</value>
</construcotr-arg>
</bean>
终于找到答案了。有一种方法可以通过域引用 test/prod bean。您只需使用#{domain}。此处有更多信息:spEL
用作:
<bean id="ThatBean" class="whicheverClass">
<constructor-arg ref="#{domain}" />
</bean>