欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring Boot (2) - 配置文件

程序员文章站 2022-07-15 08:06:53
...

1 SpringBoot配置文件类型和作用

  • SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者 application.yml(application.yaml)进行配置。SpringBoot默认会从Resources目录下加载application.propertiesapplication.yml(application.yaml)文件

  • 其中,application.properties文件是键值对类型的文件,之前一直在使用,所以此处不在对properties文件的格式进行阐述。除了properties文件外,SpringBoot还可以使用yml文件进行配置。

2 application.yml配置文件

  • YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁。
  • YML文件的扩展名可以使用.yml或者.yaml

2.1 yml配置文件的语法

2.1.1 配置普通数据

  • 语法:key: value
  • 注意:value之前有一个空格

2.1.2 配置对象数据

  • 语法:
key:
 key1: value1
 key2: value2

或者:

key: {key1: value1,key2: value2}

注意:key1前面的空格个数不限定,在yml语法中,相同缩进代表同一个级别


person:
 name: haohao
 age: 31
 addr: beijing
#或者
person: {name: haohao,age: 31,addr: beijing}

2.1.3 配置Map数据

同上面的对象写法

2.1.4 配置数组(List、Set)数据

  • 语法:
key:
- value1
- value2
或者:
key: [value1,value2]


city:
	- beijing
	- tianjin
	- shanghai
	- chongqing
#或者
city: [beijing,tianjin,shanghai,chongqing]
#集合中的元素是对象形式
student:
	- name: zhangsan
	  age: 18
	  score: 100
    - name: lisi
      age: 28
      score: 88
    - name: wangwu
      age: 38
      score: 90

注意:value1与之间的 - 之间存在一个空格

3 配置文件与配置类的属性映射方式

3.1 注解@Value映射

我们可以通过@Value注解将配置文件中的值映射到一个Spring管理的Bean的字段上

Spring Boot (2) - 配置文件

  • Controller
@Controller
public class QuickController {

    @Value("${name}")
    private String name;

    @Value("${person.addr}")
    private String addr;

    @RequestMapping("/quick")
    @ResponseBody
    public String quick(){

        return "name: " + name + " addr: " + addr;
    }

}

Spring Boot (2) - 配置文件

3.2 使用注解@ConfigurationProperties映射

   <aaa@qq.com 的执行器的配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
@Controller
@ConfigurationProperties(prefix="person")
public class Quick3Controller {

    private String name;
    private String addr;

    public String getName() {
        return name;
    }

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

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    @RequestMapping("/quick3")
    @ResponseBody
    public String quick3(){

        return "name: " + name + " addr: " + addr;
    }

}