多环境启动配置请参考:多环境启动
spring boot 的配置文件分为三种:properties, yml, yaml
一、配置文件的读取方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| server.port=8888
origin.href=https://www.pangcy.com origin.port=8080 origin.domain=www.pangcy.com
origin.ascii[0]=a origin.ascii[0]=b origin.ascii[0]=c origin.ascii[0]=d origin.ascii[0]=e
origin.map[a]=1; origin.map[b]=2; origin.map[c]=3; origin.map[d]=4; origin.map[e]=5;
PROPERTIES
|
1. 通过 value 注解获取单个属性
1 2 3 4 5 6 7 8 9 10 11
| import org.springframework.beans.factory.annotation.Value;
public class BookController { @Value("${server.port}") private Integer port; @Value("${origin.ascii[0]}") private char[] ascii; }
JAVA
|
2. 通过自动注入 Enviroment 获取所有配置
1 2 3 4 5 6 7 8 9 10 11 12
| import org.springframework.core.env.Environment;
public class BookController { @Autowired private Enviroment enviroment;
public static void main(String[] args){ Integer port = enviroment.getProperty("server.port"); } }
JAVA
|
3. 通过注册实体类,获取配置
注册实体类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| package com.pangcy.book.domain;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;
import java.util.Map;
@Component @ConfigurationProperties(prefix = "origin") public class Origin { private String href; private String domain; private Integer port;
public char[] getAscii() { return ascii; }
public void setAscii(char[] ascii) { this.ascii = ascii; }
public Map<Character, Integer> getMap() { return map; }
public void setMap(Map<Character, Integer> map) { this.map = map; }
private char[] ascii; private Map<Character, Integer> map;
public String getHref() { return href; }
public void setHref(String href) { this.href = href; }
public String getDomain() { return domain; }
public void setDomain(String domain) { this.domain = domain; }
public Integer getPort() { return port; }
public void setPort(Integer port) { this.port = port; }
@Override public String toString() { return "Origin{" + "href='" + href + '\'' + ", domain='" + domain + '\'' + ", port=" + port + '}'; } }
JAVA
|
注入实体类
1 2 3 4 5 6 7 8 9 10 11 12
| import com.pangcy.book.domain.Origin;
public class BookController { @Autowired private Origin origin;
public static void main(String[] args){ Integer port = origin.getPort(); } }
JAVA
|
二、配置文件分类
1、不同格式运行时优先级
- application.properties > application.yml > application.yaml
2、不同文件夹下运行时优先级
SpringBoot 中4及配置文件
- 1级:file: config/application.yml 【最高级】
- 2级:file: application.yml
- 3及:classpath:config/application.yml
- 4级:classpath:application.yml 【最低级】
作用
- 1级与2级留作系统打包后设置通用属性
- 3级与4级用于系统开发阶段设置通用属性