SpringBoot 配置(学习笔记7)

Spring Boot 配置文件、加载顺序、配置原理

1、配置文件

Spring Boot 使用一个全局的配置文件,配置文件名是固定的。

配置文件作用:修改 Spring Boot 自动配置的默认值;Spring Boot 在底层都给我们自动配置好默认值,如果想修改默认值,比如:


说说 application.yml 和 application.properties 两个文件的优先级。

如果你的项目中存在  application.properties 文件, 那么  application.yml 文件就只是一个摆设。

1)、application.properties


2)、application.yml

.yml是YAML(YAML Ain't Markup Language)语言的文件,这种语言以数据做为中心,而不是以置标语言为重点。  它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。它是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。比json、xml等更适合做配置文件。

yml基本语法,如下图:

扫描二维码关注公众号,回复: 1575609 查看本文章

k: v: 表示一对键值对(k: (空格)v  这个空格是必须有的

以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的。属性和值是大小写敏感的

server:
    port:8081
    path:/hello
    address:


值的写法:

字面量:普通的值(数字、字符串、布尔)

        k: v: 字面值直接写

        字符串默认不用加上单引号或双引号;如果加上单引号或双引号,具有特殊意义:

        "":双引号   不会转义字符串里面的特殊字符,特殊字符串会作为本身想表示的意思

               比如:name: "zhang san \n lisi" 输出:zhang san 换行 lisi

        '':单引号   会转义特殊字符,特殊字符最终只会是一个普通的字符串输出

                比如:name: 'zhang san \n lisi' 输出:zhang san \n lisi

对象、Map(属性和值)(键值对):

         k: v:

                对象还是k: v的方式,比如 user对象:

         user:
            name: zhangsan
            age: 18
         user: {name: zhangsan, age: 18}    // 行内写法

数组(List、Set):

        用-值表示数组中的一个元素

    pets:
      - cat
      - dog
      - pig
    pets: [cat, dog, pig]     // 行内写法

代码事例:


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

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 *  将配置文件中的每一个属性值,映射到这个组件中
 * @ConfigurationProperties(prefix = "user")
 *  1、ConfigurationProperties注解:告诉SpringBoot将该类中的属性和配置文件中相关属性一一进行绑定
 *  2、prefix = "user":告诉配置文件和哪个下面的属性进行一一映射
 *  只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能
 */
@Component
@ConfigurationProperties(prefix = "user")
public class User {

    private String uname;
    private Integer age;
    private Boolean states;
    private Date birth;

    private Map<String, Object> maps;
    private List<Object> lists;
    private Dog dog;

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public Boolean getStates() {
        return states;
    }

    public void setStates(Boolean states) {
        this.states = states;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public Map<String, Object> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, Object> maps) {
        this.maps = maps;
    }

    public List<Object> getLists() {
        return lists;
    }

    public void setLists(List<Object> lists) {
        this.lists = lists;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    @Override
    public String toString() {
        return "User{" +
                "uname='" + uname + '\'' +
                ", age=" + age +
                ", states=" + states +
                ", birth=" + birth +
                ", maps=" + maps +
                ", lists=" + lists +
                ", dog=" + dog +
                '}';
    }
}
public class Dog {

    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}




注意一:导入配置文件处理器,编写配置文件就有提示

<!-- 导入文件处理器,文件进行绑定时就会有提示 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>


注意二:


支持松散语法绑定




-------------------------------------以上是application.yml文件的配置信息-------------------------------------

application.properties 配置文件:


注意:配置 *.properties文件编码格式,采用UTF-8,不然出现乱码,下面是设置编码:



感谢--尚硅谷

猜你喜欢

转载自blog.csdn.net/yufang131/article/details/80243188