6

私はこのプロパティを設定しています

<bean id="preferencePlaceHolder"
      class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
    <property name="locations" ref="propertiesLocations" />
</bean>
<beans profile="dev, testing">
    <util:list id="propertiesLocations">
        <value>classpath:runtime.properties</value>
        <value>classpath:dev.properties</value>
    </util:list>
</beans>
...

そのようなruntime.propertiesにプロパティがあります

doImportOnStartup=false

たまにはやってみたい

mvn jetty:run -DdoImportOnStartup=true

システム プロパティが優先されます。どうすればこれを達成できますか?ありがとう。

4

1 に答える 1

3

これはあなたが望むものではないかもしれませんが、これはとにかくxmlをロードする私のプロパティです。場所は順番にロードされるため、最後に見つかったものが以前のものを上書きします。したがって、クラスパス (つまり、war) は最初にファイル システム上の env 固有のファイルが続きます。外部ファイルを指す 1 回限りの構成としてこのアプローチを好みますが、必要に応じてその外部ファイルを変更するだけで、Spring または JVM 引数を構成する必要がなくなります。最終的な場所は、override prop ファイルのフル パスを指定する -Dconfig JVM arg を探します。

お役に立てれば。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="ignoreUnresolvablePlaceholders" value="true" />
</bean>
<bean class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer">
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
    <property name="searchContextAttributes" value="true" />
    <property name="contextOverride" value="true" />
    <property name="ignoreResourceNotFound" value="true" />
    <property name="locations">
        <list>
            <value>classpath:*.properties</value>
            <value>file:${HOME}/some-env-specific-override.properties</value>
            <value>${config}</value>
        </list>
    </property>
</bean>
于 2013-01-28T16:44:07.830 に答える