2017-11-19 20 views
0

私は、Springのブートプロジェクトであるapplication-dev.propertiesを使用して自分のデスクトップにフォルダ(Webスケルトン)を作成した、開発と本番用に異なるSpringプロファイルを維持しようとしています。 application-prod.properties。Windows上でSpringプロファイルを正しく使用する方法

ただし、プロファイルを自分のプロジェクトにインポートできません。私がプロジェクトにインポートするために使用するコードは次のとおりです。

@Configuration 
@Profile("dev") 
@PropertySource("file:///${user.home}/web skeleton/application-dev.properties") 
public class DevelopmentConfig { 
@Bean 
public EmailService emailService(){ 
    return new MockEmailService(); 
} 

これがSpringでPropertySourceを使用する正しい方法であるかどうかを誰かから教えてもらえますか?

+0

正確に「私はできません」と定義します。あなたは何をしていますか、何が起こると思いますか、代わりに何が起こりますか? –

+0

私はJPAを使用しようとしており、application-dev.propertiesファイルにH2データベースを使用するための設定を書いています。しかし、JPAは、私が作成しようとしているテーブルを作成していません。だから私はそれがインポートされていないプロパティファイルのためだと仮定した。 –

+0

それはかなり野生の前提です。メソッドにSystem.out.println()を追加する(または単にデバッガを使用する)と、それが呼び出されていることを確認するか脆弱になります。あなたのJPAの問題はおそらく別の問題です。 –

答えて

0

これらのプロパティを保存するカスタムソースを任意に定義できます。デフォルトの場所(classpath:application.properties)が参照されます。自動的にこのオブジェクトに割り当てられている今、

@Configuration 
@PropertySource("classpath:configprops.properties") 
@ConfigurationProperties(prefix = "dev") 
public class ConfigProperties { 
    // previous code 
} 

プレフィックスDEVと性質のものと同じ名前を持つプロパティファイルで定義された任意のプロパティを:だから、私たちは今、既存のプロパティクラスに上記の注釈を追加します。

#Simple properties 
[email protected] 
dev.port=9000 

チェックthis

+0

これは正しいですが、プロファイルをdevからprodまたはcertに変更する必要がある場合、彼はコードを何度も再コンパイルする必要があります。それは好ましくない。あなたのpom.xmlにこのようなMavenの確実なプラグインを設定: org.apache.maven.plugins のmaven-確実な-プラグイン <設定> あなたのMavenのビルドに外部の設定ファイルを使用するには –

+0

-Dspring.config.location = file:$ {home}/conf/dev-external。プロパティ の のIntelliJでJUnitテストを実行している: ファイル名を指定して実行→編集構成 デフォルト→JUnitの が追加VMオプション - > -ea -Dspring.config.location =ファイル:$ {HOME}/confに/dev-external.properties –

+0

それ以外の場合は、$ {home}などの環境変数を使用し、propertiyに同じ名前を付けます。例えば、application.proeprties –

0

私はちょうどあなたのコンフィギュレーションクラスのコードの下にapplication.properties

@PropertySource("classpath:application-${spring.profiles.active}.properties") 

そして、このproperyを追加しすぎ

をこのような構成を行っています

spring.profiles.active=dev 

必要に応じてprodとcertに変更することができます。

関連する問題