Springブートでは、以下のシーケンスで

.properties`または

.yaml`ファイルを選択します:


  1. application- {profile}. {properties | yml}


  2. アプリケーション. {プロパティ| yml}

テスト済み:

  1. 春のブート1.5.1.RELEASE

  2. Maven

1.プロジェクトの構成

標準のMavenプロジェクト構造。


image

P.S

application.yml`は、競合を避けるために

application-bk.yml`に名前が変更されました。 YAMLファイルをテストしたい場合は、

application.yml`に名前を変更し、すべての

.properties`ファイルを削除してください。

2. @ConfigurationProperties

後でプロパティーまたはyamlファイルを読んでください。

ServerProperties

package com.mkyong.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
@ConfigurationProperties("server")
public class ServerProperties {

    private String email;
    private List<Cluster> cluster = new ArrayList<>();

    public static class Cluster {
        private String ip;
        private String path;

        public String getIp() {
            return ip;
        }

        public void setIp(String ip) {
            this.ip = ip;
        }

        public String getPath() {
            return path;
        }

        public void setPath(String path) {
            this.path = path;
        }

        @Override
        public String toString() {
            return "Cluster{" +
                    "ip='" + ip + '\'' +
                    ", path='" + path + '\'' +
                    '}';
        }
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public List<Cluster> getCluster() {
        return cluster;
    }

    public void setCluster(List<Cluster> cluster) {
        this.cluster = cluster;
    }

    @Override
    public String toString() {
        return "ServerProperties{" +
                "email='" + email + '\'' +
                ", cluster=" + cluster +
                '}';
    }
}

3.プロファイルベースのプロパティ

マルチプロファイル `.properties`の例です。

application.properties

#Logging
logging.level.org.springframework.web=ERROR
logging.level.com.mkyong=ERROR
logging.level.=error

#spring
spring.main.banner-mode=off
spring.profiles.active=dev

application-dev.properties

#dev environment
server.email: [email protected]
server.cluster[0].ip=127.0.0.1
server.cluster[0].path=/dev1
server.cluster[1].ip=127.0.0.2
server.cluster[1].path=/dev2
server.cluster[2].ip=127.0.0.3
server.cluster[2].path=/dev3

application-prod.properties

#production environment
server.email: [email protected]
server.cluster[0].ip=192.168.0.1
server.cluster[0].path=/app1
server.cluster[1].ip=192.168.0.2
server.cluster[1].path=/app2
server.cluster[2].ip=192.168.0.3
server.cluster[2].path=/app3

4.プロファイルベースのYAML

マルチプロファイル `.yml`の例YAMLでは、 ” – “セパレータを使用して複数のプロファイルを作成できます。

application.yml

logging:
  level:
    .: error
    org.springframework: ERROR
    com.mkyong: ERROR

spring:
  profiles:
    active: "dev"
  main:
    banner-mode: "off"

server:
  email: [email protected]

---

春:

プロファイル:devサーバ:

email:[email protected]クラスタ:

 -  ip:127.0.0.1 path:/dev1  -  ip:127.0.0.2 path:/dev2  -  ip:127.0.0.3 path:/dev3

---

spring:
  profiles: prod
server:
  email: [email protected]
  cluster:
    - ip: 192.168.0.1
      path:/app1
    - ip: 192.168.0.2
      path:/app2
    - ip: 192.168.0.3
      path:/app3

デモ

5.1 Springブートアプリケーション。

Application.java

package com.mkyong;

import com.mkyong.config.ServerProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application implements CommandLineRunner {

    @Autowired
    private ServerProperties serverProperties;

    @Override
    public void run(String... args) throws Exception {
        System.out.println(serverProperties);
    }

    public static void main(String[]args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

}

5.2パッケージ化して実行します。

$ mvn package

# Profile : dev , picks application-dev.(properties|yml) and application.(properties|yml)
$ java -jar target/spring-boot-profile-1.0.jar

ServerProperties{email='[email protected]', cluster=[    Cluster{ip='127.0.0.1', path='/dev1'},
    Cluster{ip='127.0.0.2', path='/dev2'},
    Cluster{ip='127.0.0.3', path='/dev3'}]}

# Profile : prod, picks application-prod.(properties|yml) and application.(properties|yml)
$ java -jar -Dspring.profiles.active=prod target/spring-boot-profile-1.0.jar

ServerProperties{email='[email protected]', cluster=[    Cluster{ip='192.168.0.1', path='/app1'},
    Cluster{ip='192.168.0.2', path='/app2'},
    Cluster{ip='192.168.0.3', path='/app3'}]}

# Profile : abc, a non-exists profile
$ java -jar -Dspring.profiles.active=abc target/spring-boot-profile-1.0.jar
ServerProperties{email='null', cluster=[]}

  • Note ** + Spring Boot、デフォルトプロファイルは

    default`です。プロファイルは

    spring.profiles.active`プロパティで設定できます。

ソースコードをダウンロードする

参考文献

ブート – プロファイル固有のプロパティ]。

Springプロファイルの例

  1. link://spring-boot/spring-boot-profiles-example/[スプリングブートプロファイル

例]