2017-05-24 15 views
0

すべての* .propertiesファイルが/ etc/foo /にあるように設定ファイルを完全に外部化したいと思います。Springboot @PropertySource --spring.config.location =/etc/foo/

しかし私は一つの大きなapplication.propertiesに全てを入れる必要はないので、特定の部分を個々の* .propertiesファイルに分割します。

@PropertySourceには、application.propertiesの場合とまったく同じように、指定されたプロパティファイルの場所を解決する必要があることをどのように伝えることができますか?つまり、 " - spring.config.location "?

私のクラスには、理想的には、このようになります:

@Configuration 
@PropertySource("dpuProfiles.properties") 
@ConfigurationProperties("dpu.profiles") 
public class DpuProfilesConfiguration { 
... 
} 

私は明示的に「ファイル:/etc/foo/dpuProfiles.properties」を指定した場合、それは作業を行います。 "$ {spring.config.location} /dpuProfiles.properties"などのELの代用ができませんでした。変数が複数のディレクトリを含む可能性があるため、意味をなさないでしょう。

あなたはそれをすることによって、あなたの -classpathに設定(S)のディレクトリを指定して、あなたのケースのためにあなたの @PropertySource

にクラスパスからそれを指すことが

CLASSPATH=just_added_as_an_example_jar.jar:/etc/foo/ 
-classpath "$CLASSPATH" 

になります。しかし、あなたが変更する必要が行うことができます

答えて

1

上記 -

@PropertySource({"classpath:dpuProfiles.properties"}) 
@ConfigurationProperties({"classpath:dpu.profiles"}) 

注意を次のように@PropertySource値例はスクリプトから実行することです。

+0

/etc/fooをクラスパスディレクトリとして使用することをお勧めします。 My @ConfigurationProperitesは正しくありましたが、プロパティ名の接頭辞を取得し、ファイル名ではなくパラメータとして取得しました。 さらに、pom.xmlのに/ etc/fooを追加して、 "mvn test"がそれを見つけられるようにしました。 – lathspell

関連する問題