2014-04-01 70 views
1

我有一個bean的配置文件如下春天配置文件替換bean的名稱與值從屬性文件

<bean id="myFactory" class="com.public.Factory"> 
    <property name="dataSourceAdaptor" ref="${value.from.property file}Adaptor" /> 
</bean> 

我如何實現這一目標。

添加以下的配置文件

<util:properties id="myProperties" location="classpath:app.properties"/> 

的頂部,然後嘗試使用$ {}指價值,但我得到一個錯誤,說明$ {value.from.property文件}適配器是不是有效的豆

我不能把整個名稱(xyzAdaptor)放在屬性文件中,因爲屬性文件中的值是一個機構,並且每個機構都有多個適配器。

例如xzyDisplayAdaptor,xyzProductAdaptor,xyzDatasourceAdaptor

的XYZ客戶端可以改變說ABC的客戶,我希望能夠在屬性文件中的值更改爲ABC和所有ABC相關Bean將被注入。

+0

如何使用'FactoryBean'從屬性讀取並返回相應銜接? – superEb

回答

1

util:properties標記用於創建java.util.Properties的實例。我認爲你需要的是一個PropertyPlaceholderConfigurer。 例如,

<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" scope="singleton"> 
      <property name="searchSystemEnvironment" value="true" /> 
      <property name="ignoreResourceNotFound" value="true" /> 
      <property name="locations"> 
       <list> 
        <value>classpath:app.properties</value> 
       </list> 
      </property> 
</bean> 
1

用SpeI試試這個:

<util:properties id="myProperties" location="classpath:app.properties"/> 

    <bean id="myFactory" class="com.public.Factory"> 
     <property name="dataSourceAdaptor" ref="#{'${value.from.property file}'+'Adaptor'}" /> 
    </bean>