2016-08-18 5 views
0

Mavenを使用して簡単なSpringアプリケーションを作成しています。設定とプロパティは2つあります。階層は次のとおりです。複数のSpringアプリケーションのプロパティのオーバーライド

- package.main 
    - App.java 
    - AppConfig.java 
    - app.properties 
- package.main.model 
    - ModelConfig.java 
    - model.properties 

App.java

public static void main(String[] args) { 
    ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 
    System.out.println(applicationContext.getEnvironment().getActiveProfiles()[0]); 
} 

AppConfig.java

@Configuration 
@Import(ModelConfig.class) 
@PropertySource("classpath:/package/main/app.properties") 
public class AppConfig {} 

app.properties

spring.profiles.active = prod 

ModelConfig.java

@Configuration 
@PropertySource("classpath:/package/main/model/model.properties") 
@ComponentScan 
public class ModelConfig {} 

model.properties

spring.profiles.active = dev 
  1. なぜmodel.propertiesapp.properties(結果はdevで)オーバーライドは?
  2. application.propertiesを作成する方法は、新しいプロパティでオーバーロードできないSpring Bootのようなものですか?

答えて

0

ModelConfigが読み込まれたBeanの順番で、アクティブなプロファイルが 'dev'に設定されます。

ところで、あなたのセットアップを見て、プロパティを経由して豆のアクティブなプロファイルを設定すると、このない良いアイデアので、個別のプロパティファイルを介してロードすることはないが、spring.profiles.active should be specified in

application.properties ファイル、のようなファイルアプリケーションの起動時には、コマンドライン引数を経由してプロファイル

または正しくBeanをロードするあなたは

-Dspring.profiles.active 
を呼び出すとき

またはプログラムで

context.getEnvironment()。setActiveProfiles( "live");

いくつかの良い例here

関連する問題