在Spring中读取双重/多属性

时间:2015-10-29 19:21:38

标签: java spring spring-mvc properties spring-boot

我正在尝试从数据库中读取特定于应用程序的属性,并且我正在尝试将数据库凭据保留在属性文件中。

  

所以我需要加载属性(文件和数据库),而应用程序是   负荷。

我的配置如下。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="WEB-INF/config/db.properties"/>
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
    <property name="properties">
        <bean class="org.apache.commons.configuration.ConfigurationConverter" factory-method="getProperties">
            <constructor-arg>
                <bean class="org.apache.commons.configuration.DatabaseConfiguration">
                    <constructor-arg type="javax.sql.DataSource" ref="postgresqlDataSource"/>
                    <constructor-arg value="TBL_APP_SETTINGS"/>
                    <constructor-arg value="PROP_KEY"/>
                    <constructor-arg value="PROP_VALUE"/>
                </bean>
            </constructor-arg>
        </bean>
    </property>
</bean>
<bean id="postgresqlDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="url" value="${db.url}"/>
    <property name="driverClassName" value="org.postgresql.Driver"/>
    <property name="username" value="${db.user}"/>
    <property name="password" value="${db.pass}"/>
    <property name="initialSize" value="1"/>
    <property name="maxActive" value="5"/>
    <property name="validationQuery" value="SELECT 1"/>
    <property name="timeBetweenEvictionRunsMillis" value="5000"/>
    <property name="removeAbandonedTimeout" value="60"/>
    <property name="minEvictableIdleTimeMillis" value="30000"/>
    <property name="minIdle" value="3"/>
</bean>

$ {db.url}

引发了错误

请帮忙怎么做?提前谢谢。

2 个答案:

答案 0 :(得分:0)

我认为最简单的方法是将凭据写入spring xml并将其导入主xml并将其作为bean引用:

<bean id="dbUrl" class="java.lang.String">
    <constructor-arg type="java.lang.String" value="jdbc://..."/>
</bean>
... same for dbUser and dbPassword

然后使用ref引用该值。

答案 1 :(得分:0)

最简单的方法是将指南的某些配置属性外部化spring.io site。您可以将属性作为java系统属性或命令行参数传递

第二种方法是编写自己的PropertyPlaceholderConfigurer,它将从application.yml和数据库中读取属性