30

環境変数を設定した後、AWSSystem.getProperty("JDBC_CONNECTION_STRING")http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_Java.managing.htmlで話し ます。System.getPropertySpring XML 構成コード内で呼び出すことも、リソース バンドル自体がこれらの環境変数を何らかの方法で抽出してそれらを提供する必要があるため、リソース バンドルのショートカットを呼び出すこともできないことを除けば、すべて素晴らしいことです。この例の構成を環境変数を使用するように変換するのを手伝ってくれませんか? :-)

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://secrethost:007/whois?autoReconnect=true" />
    <property name="username" value="bond" />
    <property name="password" value="abuginsidemistycorner" />
    <property name="initialSize" value="100" />

    <property name="minEvictableIdleTimeMillis">
        <value>300000</value>
    </property>

    <property name="timeBetweenEvictionRunsMillis">
        <value>60000</value>
    </property>

    <property name="maxIdle" value="20" />
</bean>

私は人々がここで何をしているのか理解できませんでした:

Spring FileSystemResource に環境変数ベースの場所を使用できますか? 最近の春のバージョンではどれが機能しますか?

4

3 に答える 3

9

クラスorg.springframework.beans.factory.config.PropertyPlaceholderConfigurerを使用してプロパティ ファイルをロードしている場合、プロパティsystemPropertiesModeを value に設定できますSYSTEM_PROPERTIES_MODE_OVERRIDE

spring.xml には、次の Bean があります。

<bean id="propertyPlaceholder"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
    <property name="locations">
        <list>
            <value>classpath://file.properties</value>                  
        </list>
    </property>
</bean>

Spring は、次の方法でシステム プロパティをロードします。

指定されたプロパティを試す前に、まずシステム プロパティを確認してください。これにより、システム プロパティは他のプロパティ ソースをオーバーライドできます。

このようにして、システム プロパティを通常のプロパティとして読み取ることができるはずです。

于 2013-09-11T15:09:05.873 に答える