質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

4114閲覧

Springでpropertiesファイルが切り替えられない

teramasa

総合スコア76

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2016/08/27 16:36

###前提・実現したいこと
開発と本番でyml形式のプロパティファイルを切り替えたいです

###発生している問題・エラーメッセージ
どうしても後段のqaのプロパティになってしまい、プロパティの切り替えが出来ていません。

###該当の実行コマンド

# java -jar /root/service_1-1.0-SNAPSHOT.jar --spring.profiles.active=default

###properties.yml

spring: profiles.active: default --- spring: profiles: default spring.datasource: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/myappdb?autoReconnect=true username: devuser password: devpassword management: security: enabled: true role: ADMIN --- spring: profiles: qa spring.datasource: url: jdbc:mysql://qa.myapp.com:13306/myappdb?autoReconnect=true username: qauser password: qapassword

###試したこと
順番を入れ替えたり色々書式は試しましたが駄目でした。
海外のStackoverflowなども漁りましたがどうにも解決策が見つかりません。
みなさま、どうかお力をお貸しいただけますと幸いです。

###補足情報(言語/FW/ツール等のバージョンなど)
java8
SpringBoot 1.2.1
CentOS 6.7

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A-pZ

2016/08/27 18:39

properties.ymlが1つのファイルに書かれているように見えますが、これはファイル名はそれぞれ別でしょうか?
teramasa

2016/08/28 01:05

A-pZさま ご質問ありがとうございます。 こちらは一つのファイルです。別ファイルにしなくてもひとつにまとめる方法があるということで、ここを参考に書きました。 http://qiita.com/mas0061/items/4dd9c54a6bc69b564a02 ちなみにymlファイルを分けても切り替え不可でした。
guest

回答1

0

ベストアンサー

ご記載くださったymlファイルの設定が問題あるのかと思いましたが、以下の検証コードで試してみたところ、きちんとdefault profileの値を取得できていましたので、おそらく起動時の設定でしょうか。

http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html によると、-Dで指定しますから、

java -jar /root/service_1-1.0-SNAPSHOT.jar -Dspring.profiles.active=default

で動くかと思います。

検証コード:

java

1import org.springframework.beans.factory.annotation.Autowired; 2import org.springframework.boot.CommandLineRunner; 3import org.springframework.boot.SpringApplication; 4import org.springframework.boot.autoconfigure.SpringBootApplication; 5 6@SpringBootApplication 7public class SpringBootSampleApplication implements CommandLineRunner{ 8 9 public static void main(String[] args) { 10 SpringApplication.run(SpringBootSampleApplication.class, args); 11 } 12 13 @Override 14 public void run(String... args) throws Exception { 15 System.out.println( getConfig().getDriverClassName()); 16 System.out.println( getConfig().getUrl()); 17 System.out.println( getConfig().getUsername()); 18 System.out.println( getConfig().getPassword()); 19 } 20 21 @Autowired 22 Configuration config; 23 24 protected Configuration getConfig() { 25 return config; 26 } 27}

java

1import org.springframework.boot.context.properties.ConfigurationProperties; 2import org.springframework.stereotype.Component; 3 4@Component 5@ConfigurationProperties(prefix = "spring.datasource") 6public class Configuration { 7 8 private String driverClassName; 9 private String url; 10 private String username; 11 private String password; 12 13 public String getDriverClassName() { 14 return driverClassName; 15 } 16 17 public void setDriverClassName(String driverClassName) { 18 this.driverClassName = driverClassName; 19 } 20 21 public String getUrl() { 22 return url; 23 } 24 25 public void setUrl(String url) { 26 this.url = url; 27 } 28 29 public String getUsername() { 30 return username; 31 } 32 33 public void setUsername(String username) { 34 this.username = username; 35 } 36 37 public String getPassword() { 38 return password; 39 } 40 41 public void setPassword(String password) { 42 this.password = password; 43 } 44}

投稿2016/08/28 09:14

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teramasa

2016/08/28 11:31

A-pZさま わざわざ検証まで行っていただきましてありがとうございます! なるほど、書式に問題ないということであればやはり起動の仕方がおかしいんですね。 「--spring.profiles.active=」ではなく「 -Dspring.profiles.active=」で試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問