1

アプリケーションの構成ファイルを戦争から分離しようとしています。すべてのプロパティ ファイルをディスク上のディレクトリに保持したいと考えています。次に、war 内で必要な唯一のプロパティは、構成ディレクトリへのパスになります (それは という名前のファイルにあるとしましょうconfig.properties):

config.dir = /home/me/config

春の構成では、このファイルをロードして(他のファイルがどこにあるかがわかるように)、次に外部ファイルをロードします。

<bean id="propertySourcesPlaceholderConfigurer"
 class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:META-INF/config.properties</value>
            <value>${config.dir}/other.properties</value>
        </list>
    </property>
</bean>

しかし、これは機能しません。プレースホルダーは解決されません:

java.io.FileNotFoundException: class path resource [${config.dir}/config.properties] cannot be opened because it does not exist

タイプの別の Bean も使用してみPropertySourcesPlaceholderConfigurerましたが、あまり役に立ちませんでした。

どうすればこれを達成できるか知っていますか?

4

2 に答える 2

2

これは、デフォルト環境のPropertySourceを登録することで解決できます。これを行う方法の 1 つは、Java 構成を使用することです。

@Configuration
@PropertySource("classpath:META-INF/config.properties")
public class MyConfig {

}

これを配置すると、プレースホルダーが解決されます。

<bean id="propertySourcesPlaceholderConfigurer"
 class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>${config.dir}/other.properties</value>
        </list>
    </property>
</bean>
于 2013-03-30T19:31:58.237 に答える