簡體   English   中英

如果我使用JVM變量設置位置,如何將參數從* .properties設置到SPRING appContext.xml中?

[英]How to set parameter from *.properties into SPRING appContext.xml if i set location with JVM variable?

我有一個VM參數-Dapp.conf=/path/to/config.properties ,我有一個Spring 4.2.5應用程序的appContext.xml。 config.properties包含屬性,例如database.username=username

在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}而我有例外,該參數無效。

在Spring BOOT中,我已經做到了這一點,並且很有效:

        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); 沒有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM