SpringBoot的配置文件

SpringBoot配置文件类型

  SpringBoot配置文件类型和作用:

    SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,

    就可以使用application*.properties或者application*.yml(application*.yaml)进行配置。
    SpringBoot默认会从Resources目录下加载application*.properties或application*.yml(application*.yaml)文件

  application*.yml配置文件:

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

    yml配置文件的语法:

      配置普通数据

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

      配置对象数据

        语法:
          key:
            key1: value1
            key2: value2
        或者:
          key: {key1: value1,key2: value2}

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

      配置Map数据

        和上面对象的写法一样

      配置数组(List、Set)数据

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

        集合中的元素是对象形式:
          student:
            - name: zhangsan
              age: 18
              score: 100
            - name: lisi
              age: 28
              score: 88

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

  SpringBoot配置信息的查询:

    SpringBoot的配置文件,主要的目的就是对配置信息进行修改的,但在配置时的key从哪里去查询呢?我们可以查阅SpringBoot的官方文档

      https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/#common-application-properties
    配置文件与配置类的属性映射方式:

      1.使用注解@Value映射

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

        application.yml配置如下:

person:
  name: zhangsan
  age: 18

        测试:

@RestController
public class DemoController {

    @Value("${person.name}")
    private String name;
    @Value("${person.age}")
    private Integer age;

    @RequestMapping("/config")
    public String config() {
        return "name:" + name + " age:" + age;
    }
}

      2.使用注解@ConfigurationProperties映射:

        通过注解@ConfigurationProperties(prefix="配置文件中的key的前缀")可以将配置文件中的配置自动与实体进行映射

        在启动类需要添加 @EnableConfigurationProperties(DemoController2.class),否则 @ConfigurationProperties(prefix = "person") 会出现红色波浪线警告;另外一种方式是在实体类上添加@Component注解(推荐)。

        application.yml配置如下:

person:
  name: zhangsan
  age: 18

        测试:

@RestController
@ConfigurationProperties(prefix = "person")
public class DemoController2 {

    private String name;
    private Integer age;

    @RequestMapping("/config2")
    public String config() {
        return "name:" + name + " age:" + age;
    }

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

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

        注意:使用@ConfigurationProperties方式可以进行配置文件与实体字段的自动映射,

          但需要字段必须提供set方法才可以,而使用@Value注解修饰的字段不需要提供set方法
        使用此注解会提示 

        可以在pom文件中配置以下执行器,用于idea工具自动识别,不配置也不影响使用

<!--@ConfiguaritionProperties的执行器的配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

 

posted @ 2020-02-26 22:47  糖不甜,盐不咸  阅读(249)  评论(0编辑  收藏  举报