2016-12-06 17 views
1

私は次のようにアクティブなプロファイルを設定しよう:(クラスパス内)springboot app:プロファイルのプロパティをspelで設定する方法は?

Application.properties

spring.profile.active = ${app.profile} 

プロパティ "app.profileは" JARの外Application.propertiesから来ている:

Application.propertiesファイル(外部)

app.profile = dev 

"dev"プロファイルの読み込みを拒否しました。 classpathの中に "spring.profile.active"プロパティを設定すると、期待どおりに動作します。

代替手段がありますか?

おかげ

答えて

0

あなたは、Webアプリケーションのweb.xmlファイルでアクティブなプロファイルを設定することができます。コードスニペットの下に参照してください。

<context-param> 
    <param-name>spring.profiles.active</param-name> 
    <param-value>dev, testdb</param-value> 
</context-param> 

その一切のweb.xmlファイルがありません、あなたは、あなたがWebApplicationInitializerを使用することができ、Javaを使用してWebアプリケーションをconfiguriongしている場合。コードスニペットの下に参照してください。

class WebAppInitializer extends WebApplicationInitializer { 

    void onStartup(ServletContext container) { 
     AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext(); 
     rootContext.getEnvironment().setActiveProfiles("profileName"); 
     rootContext.register(SpringConfiguration.class); 
     container.addListener(new ContextLoaderListener(rootContext)); 
    } 
} 

WebAppInitializerは、これが機能するため@Configurationでアノテートする必要があります。

お手伝いが必要な場合や、より多くのヘルプが必要な場合はお知らせください。

+0

私はRESTのみで作業しています。 "WebApplicationInitializer"は正しい方法ですか? – Idan

+0

私の目標は、ユーザーが "app.profile"プロパティを変更し、spring.profile.active = $ {app.profile}が正しいプロファイルを設定することです。 他のすべての外部プロパティーは、プロファイルを除き、期待通りに機能します。 – Idan

3

あなたはSpringブートアプリケーションの起動時にプロファイル名を指定できます。

は、Eclipse
から実行CMD

java -jar my-first-spring-boot-app.jar -Dspring.profiles.active=dev 

から実行しているあなたはプロ文法的に設定されたプロファイルにしたい場合は、以下のURLを参照してください。VM引数

としてspring.profiles.active=devを追加します。
Spring Boot Programmatically setting profiles

+0

プロパティ名を変更することはできますか?ユーザーはこれらの外部プロパティーを編集します – Idan

+0

プロパティー変更不可(spring.profiles.active)値(dev)のみが変更可能 – Jobin

+0

私の目標は、ユーザーが "app.profile"プロパティーを変更し、spring.profile.active = $ {app.profile}は適切なプロファイルを設定します。 – Idan