【问题标题】:Reading Dual/Multiple Properties in Spring在 Spring 中读取双/多属性
【发布时间】:2015-10-29 19:21:37
【问题描述】:

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

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

我的配置如下。

<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} 抛出错误

请帮助如何做到这一点?提前致谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我相信最简单的方法是将凭据写入 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引用该值。

      【讨论】:

        猜你喜欢
        • 2013-05-26
        • 2016-08-12
        • 2016-04-29
        • 1970-01-01
        • 2015-11-13
        • 1970-01-01
        • 1970-01-01
        • 2021-11-27
        • 2018-09-28
        相关资源
        最近更新 更多