2016-04-22 62 views
0

我有一個虛擬機參數-Dapp.conf=/path/to/config.properties,我有一個適用於我的Spring 4.2.5應用程序的appContext.xml。 這config.properties包含了諸如database.username=username如果我使用JVM變量設置位置,如何將參數從* .properties設置爲SPRING appContext.xml?

propertis在XML配置我有這個bean <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value= "${database.driver}"/> <property name="url" value="${database.url}"/> <property name="username" value="${database.username}"/> <property name="password" value="${database.password}"/> </bean>

我試圖用這個來閱讀我的配置文件:

`<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" > 
    <property name="location" value="file:///#{systemEnvironment['app.conf']}"/> 
</bean>` 

但我插入參數value= "${database.driver}不讀從文件。

我如何插入我的參數從我的屬性文件到我的數據源?

在這種情況下,它只是插入${database.driver}和我有例外,該參數無效。

回答

0

在春季啓動前,我做了這一點,它的工作:

 Properties properties = new Properties(); 
    try (Reader reader = 
       new FileReader(
         System.getProperty("app.conf") 
         //this contains path:"D://config.properties" 
       )) { 
     properties.load(reader); 
    } catch (IOException e) { 
     System.out.println(e.getMessage()); 
    } 
    for (String propertyName: properties.stringPropertyNames()) { 
     System.setProperty(propertyName, properties.getProperty(propertyName)); 
    } 

此代碼加載我的屬性,VM參數,我可以用Spring註解訪問它們@Value("#{property.name}")

我不知道爲什麼,但System.setProperties(properties);沒有工作。