1

これを読んで、Web アプリで自分の環境を簡単にカスタマイズできることを知りました。

私のカスタマイズは非常に単純です。デプロイ可能な war ファイルにパッケージ化されたいくつかのプロパティ ファイルがあり、オーバーラップした場合にこれらのプロパティをオーバーライドするローカル プロパティ ファイルを Web サーバー マシンに配置したいと考えています。そのために、ApplicationContextInitializer インターフェイスを実装し、ローカル プロパティ ファイルをロードして、 environmentの addFirst メソッドを使用しました。これにより、ローカル ファイルが war にパックされたプロパティ ファイルを上書きするようになりました。

これは完璧に機能しました。今、私はJava-Springプロセス(Webアプリではない)で同じことをしたいのですが、どうすればできますか?

これまでに見つけた最善の解決策は、構成クラスにメソッドを追加し、@PostConstructアノテーションを付けることです。このメソッドは、ApplicationContextInitializer の initialize メソッドとまったく同じことを行います。

条件付きで読み込まれるいくつかの Bean があり、これ (条件付き注釈コード) が @postConstruct メソッドの前に発生するため、このソリューションは私のニーズに応えません(条件付き読み込みは私のプロパティに基づいているため、これは良くありません)。

4

2 に答える 2

0

複数のプロパティソースをロードすることでそれを乗り越えました:

@Configuration
@ComponentScan("com.company.project")
@PropertySources({ @PropertySource(value = "classpath:/my-jar-properties-file.properties", ignoreResourceNotFound = false),
    @PropertySource(value = "file:/path/to/file/local.filesystem.properties.file.properties", ignoreResourceNotFound = false) })
public class MyConfiguration { ... }

このようにして、最後のプロパティ ファイルが前のプロパティ ファイルをオーバーライドするので、単純です。

于 2015-05-11T13:31:46.593 に答える