SpringBoot配置文件

一、配置文件加载优先级

  1. bootstrap配置文件优先于application
  2. 当优先级高的配置文件与优先级低的配置项发生冲突,优先加载优先级高的,若没有冲突,一同加载进去。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、YAML语法格式

1、YAML基本语法

  • key: value 表示一对键值对冒号后面必须要有空格
  • 使用空格缩进表示层级关系
  • 左侧缩进的空格数目不重要,只要同一层级的元素左侧对齐即可
  • key 与 value 大小写敏感
server:
  port: 8081
    contextPath: /info

  

2、YAML常用数据表示方法

  • 2.1 数值,字符串,布尔,日期

    • 双引号 " " :
      • 使用 双引号 不会转义特殊字符,特殊字符最终会转成本来想表示含义输出
        name: "mengxuegu \n jiaoyu" 输出: mengxuegu 换行 jiaoyu

    • 单引号 ' '  :
      • 使用 单引号 会转义特殊字符,特殊字符当作一个普通的字符串输出
        name: 'mengxuegu \n jiaoyu 输出: mengxuegu \n jiaoyu

  • 2.2 对象 & Map

    • key: value:
      • emp:
          lastName: xiaomeng
          age: 22
          salary: 10000
    • 行内写法 :
      • emp: {lastName: xiaomeng, age: 1 22, salary: 10000}
  • 2.3 数组(List、Set)

    • 用 - 值表示数组中的一个元素
      • fortes:
          - java
          - python
          - hadoop 
    • 行内写法
      • fortes: [java, python, hadoop]

三、yaml 配置文件注入值

1、@value 与 @ConfigurationProperties 区别

application.yml 配置文件

emp:
  lastName: zhangsan
  age: 28
  salary: 20000
  boss: true
  birthday: 1991/10/10
  map:
    key1: value1
    key2: value2
  list:
    - one
    - two
    - three
  forte:
    name: java
    time: 8

2、@ConfigurationProperties

JavaBean方式

/**
* 1、@ConfigurationProperties 告诉SpringBoot将配置文件中对应属性的值,映射到这个组件类中,进行一一绑定
* prefix = "emp":配置文件中的前缀名,哪个前缀与下面的所有属性进行一一映射
* 2、@Component 必须将当前组件作为SpringBoot中的一个组件,才能使用容器提供的@ConfigurationProperties功能;
*/
@Component
@Data
@ConfigurationProperties(prefix = "emp")
public class Emp {
private String lastName;
private Integer age;
private Double salary;
private Boolean boss;
private Date birthday;
private Map map;
private List list;
//特长
private Forte forte;

//特长类 @Data
public class Forte { private String name; private Integer time; }

配置自定义bean方式

@Configuration
public class PropertiesConfig {

    @Bean
    @ConfigurationProperties(prefix = "emp")
    public Emp(){
        return new Emp();
    }
}

3、@Value

@Component
public class Emp {
/**
* 类似于 Spring 中的 xml 配制文件中的数据注入方式:
* <bean class="Emp">
* <property name="lastName" value="字面量/ #{SpEL}Spring表达式/ ${key}从
配制文件取值">
* </property>
* </bean>
*/
@Value("${emp.last-name}")
private String lastName;
@Value("#{10*2}")
private Integer age;
@Value("8000")
private Double salary;
private Boolean boss;
private Date birthday;
private Map map;
private List list;
//特长
private Forte forte;

 四、多环境配置

 五、手动加载classpath下文件

点击跳转

posted @ 2020-03-21 23:23  恳小跃  阅读(159)  评论(0编辑  收藏  举报