Springブート – プロファイルベースのプロパティとyamlの例
Springブートでは、以下のシーケンスで
.properties`または
.yaml`ファイルを選択します:
-
application- {profile}. {properties | yml}
-
アプリケーション. {プロパティ| yml}
テスト済み:
-
春のブート1.5.1.RELEASE
-
Maven
1.プロジェクトの構成
標準のMavenプロジェクト構造。

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-boot-profiles-based-properties-yaml.zip
(7 KB)
参考文献
ブート – プロパティと設定]。
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-profile-specific-properties
[Spring
ブート – プロファイル固有のプロパティ]。
Springプロファイルの例
-
link://spring-boot/spring-boot-profiles-example/[スプリングブートプロファイル
例]
profiles
properties
spring boot
spring
プロフィール
リンク://tag/yaml/[yaml]