• SpringBoot配置文件-yaml


    一、配置文件

    配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了
    SpringBoot使用一个全局的配置文件(配置文件名称是固定的)

    有以下两种方式:

    • 1)application.properties:语法结构:key=value
    server.port=8081
    
    • 2)application.yaml:语法结构 :key:空格value
    server:
      port: 8081
    

    二、application.yaml配置文件

    1. 了解yaml

    YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。

    yaml的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和yaml非常接近)。

    yaml支持以下几种数据类型:

    对象

    key:
        child-key: value
        child-key2: value2
    

    数组

    pet:
      - cat
      - dog
      - pig
    //相当于:
    pet: [cat,dog,pig]
    

    2. 实体类赋值

    步骤一:导入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    

    步骤二:编写实体类

    House.java:

    package com.arlin.demo.pojo;
    
    import lombok.Data;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    import java.math.BigDecimal;
    
    @Data
    @Component
    public class House {
        @Value("广东省广州市番禺区")	//使用@Value注解方式赋值
        private String address;
        @Value("99999999")
        private BigDecimal money;
    }
    

    Person.java:

    package com.arlin.demo.pojo;
    
    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    
    @Data
    @Component
    @ConfigurationProperties(prefix = "person")	//使用yaml方式赋值,与配置文件绑定
    public class Person {
        private String personName;	//注意驼峰命名如何赋值
        private Integer age;
        private Boolean happy;
        private Date birth;
        private Map<String,Object> maps;
        private List<Object> lists;
        private House house;
    }
    

    第一种方式:@Value注解赋值

    测试:

    package com.arlin.demo;
    
    import com.arlin.demo.pojo.House;
    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    
    @SpringBootTest
    class DemoApplicationTests {
    
        @Autowired
        private House house;
    
        @Test
        void contextLoads() {
            System.out.println(house);	//House(address=广东省广州市番禺区, money=99999999)
        }
    }
    

    第二种方式:以yaml配置方式赋值

    application.yaml:

    person:
      person-name: arlin
      age: 18
      happy: false
      birth: 2002/10/01
      maps: {k1: v1, k2: v2}
      lists:
        - l1
        - l2
        - l3
      house:
        address: 广东省广州市番禺区
        money: 99999999
    

    测试:

    package com.arlin.demo;
    
    import com.arlin.demo.pojo.Person;
    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    
    @SpringBootTest
    class DemoApplicationTests {
    
        @Autowired
        private Person person;
    
        @Test
        void contextLoads() {
            System.out.println(person);	//Person(personName=arlin, age=18, happy=false, birth=Tue Oct 01 00:00:00 CST 2002, maps={k1=v1, k2=v2}, lists=[l1, l2, l3], house=House(address=广东省广州市番禺区, money=99999999))
        }
    }
    

    @ConfigurationProperties作用:

    • 将配置文件中配置的每一个属性的值,映射到这个组件中
    • 告诉springBoot将本类中的所有属性和配置文件中相关的配置进行绑定
    • 参数 prefix = "person”:将配置文件中的person下面的所有属性——对应
    • 只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能

    3. yaml支持EL表达式

    例如封装一个User类对象:

    user:
      #random.uuid:随机生成一个uuid
      id: ${random.uuid}
      #random.int:随机生成一个int
      age: ${random.int}
      #占位符:判断user.hello是否为null
      # 是 输出{{user.hello}}_01
      # 否 输出hello_01
      name: ${user.hello:hello}_01
    

    4. application配置文件可以放的位置

    官网:

    image-20210306222658473

    1. 可以放在项目名下新建的config文件目录下
    2. 项目名下新建的config文件目录下的子目录下
    3. 项目名下
    4. resource目录的config目录下
    5. resource目录下

    优先级依次递减

    三、 多环境配置

    ① 分多个文件配置不同环境

    application.yaml:

    spring:
      profiles:
        active: dev
    

    application-dev.yaml:

    server:
      port: 8081
    

    application-test.yaml:

    server:
      port: 8082
    

    image-20210306224707824

    ② 这里properties和yaml类似,不同的是yaml还可以在同一个文件中分模块,不需要多个文件。

    application.yaml:

    spring:
      profiles:
        active: dev
    
    ---
    server:
      port: 8081
    spring:
      profiles: dev
    
    ---
    server:
      port: 8082
    spring:
      profiles: test
    

    image-20210306224826350

  • 相关阅读:
    Spring/Spring-Boot 学习 连接redis数据库
    Spring/Spring-Boot 学习 答疑
    Spring/Spring-Boot 学习 paoding-rose-jade 连接MySQL数据库
    Spring/Spring-Boot 学习 Bean注入的方式
    Spring/Spring-Boot 学习 @Autowired 与 @Resource
    博客园主题与代码高亮
    从不懂spring的开始的学习之旅
    nginx 缓存服务器配置
    jenkins + sonar代码质量自动化分析平台
    Linux下如何查看哪些进程占用的CPU内存资源最多
  • 原文地址:https://www.cnblogs.com/arlenlin/p/14492808.html
Copyright © 2020-2023  润新知