SpringBoot的yml配置文件(三)中

简介: SpringBoot的yml配置文件(三)

三. Yaml 配置文件的基本语法


三.一 基本规则


  1. 大小写敏感
  2. 使用缩进表示层级结构
  3. 缩进时,不使用 TAB 键进行缩进,只允许使用空格。
  4. 缩进时,不一定要是四个空格键,或者两个空格键,只需要保证同一层次下的元素左对齐就可以了。
  5. key: value 的值, : 与value 之间,需要有一个空格,进行分隔开来。
  6. 注释时,用 # 进行注释


三.二 放置基本的常量元素


# 放置基本的元素
name: 两个蝴蝶飞
age: 26
sex: 男
single: true
weight: 68.5


三.三 放置对象


# 放置对象
book:
  name: 陌生人,我送你一首诗
  author: 岳泽霖
  nickName: 两个蝴蝶飞


三.四 放置数组


# 放置数组
hobby:
  - 看书
  - 写代码
  - 写诗
  - 写博客


三.五 单引号,双引号


# 放置特殊的字符串
str:
  desc1: 我是两个蝴蝶\n飞  # 变成: 我是两个蝴蝶\n飞
  desc2: "我是两个蝴蝶\n飞" # 会变成: 我是两个蝴蝶
                          #        飞
  desc3: '我是两个蝴蝶\n飞' # 会变成: 我是两个蝴蝶\n飞 


字符串,不用加 单引号,或者双引号。


双引号,不会进行转义,将 \n 变成换行回车


单引号,会进行转义, \n 还是\n.


三.六 合理的嵌套使用


book:
  name: 陌生人,我送你一首诗
  author: 岳泽霖
  nickName: 两个蝴蝶飞
  # 放置数组
  hobby:
    - 看书
    - 写代码
    - 写诗
    - 写博客
  info:
    name: 两个蝴蝶飞
    age: 26
    sex: 男
    single: true
    weight: 68.5


这样,完全是合法的。


三.七 配置占位符


name2: 老蝴蝶${random.uuid}  # 随机生成 uuid
age2: ${random.int} # 随机生成int范围内的值,-2^31~2^31-1


三.八 配置引用和默认值


info1: ${book.author} # 引入book对象里面的 author属性
info2: ${book.info:张三} # 引用book对象里面的info属性,如果没有,取:后面的默认值,张三


四. 读取application.yml 里面的配置文件


四.一 构建基本的配置文件读取信息


# 放置基本的元素
name: 两个蝴蝶飞
single: false
age: 26
# 放置对象
book:
  name: 陌生人,我送你一首诗
  author: 岳泽霖
  score: 0.00
  hobby:
    - 看书
    - 写代码
    - 写诗
    - 写博客
addr: ${book.addr:暂无地址}


四.二 采用 Bean 对象进行接收


在pojo 包下,新创建两个类用于接收数据


2021041016272041.png


四.二.一 SingleInfo 类接收主体对象


@Data
public class SingleInfo {
    private String name;
    private Boolean single;
    private Integer age;
    private String addr;
    private Book book;
}


四.二.二 Book 类接收书籍


@Data
public class Book {
    private String name;
    private String author;
    private Double score;
    private String[] hobby;
}


四.三 采用 Spring的 @Value 进行接收


四.三.一 添加组件注解和@Value注解


@Data
@Component
public class SingleInfo {
    @Value("${name}")
    private String name;
    @Value("${single}")
    private Boolean single;
    @Value("${age}")
    private Integer age;
    @Value("${addr}")
    private String addr;
    //暂时不处理
    private Book book;
}


四.三.二 测试运行


@SpringBootTest
class YamlApplicationTests {
    @Autowired
    private SingleInfo singleInfo;
    @Test
    void contextLoads() {
        System.out.println(singleInfo);
    }
}


测试运行:


20210410162750359.png


能够获取到相应的数据。


但是这种方式,需要对属性一个一个的封装。


book 没有添加相应的注解,故输出为 null


四.四 采用 @ConfigurationProperties 进行封装


四.四.一 在SingleInfo 类上面,添加 @ConfigurationProperties 注解


这个注解,一定要记住。 Configuration+Properties ,组成了 @ConfigurationProperties


20210410162801477.png


Idea 提示让打开文档,那就打开文档,目前发现文档链接已经打不开了。


解决方案,添加 spring-boot-configuration-processor 依赖即可。


四.四.二 添加依赖


在 pom.xml 里面,添加 spring-boot-configuration-processor 依赖


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


添加依赖之后,重启就好了。


20210410162816601.png

相关文章
|
8月前
|
XML JavaScript 前端开发
【Java】Spring Boot中的配置properties 和 yml 的区别
【Java】Spring Boot中的配置properties 和 yml 的区别
|
9月前
|
Java Linux Maven
SpringBoot多环境的yml或properties配置,生产环境和开发环境分离(超详细)
SpringBoot多环境的yml或properties配置,生产环境和开发环境分离(超详细)
160 0
|
1月前
|
Java C++
SpringBoot中的properties,yml,yaml的区别
SpringBoot中的properties,yml,yaml的区别
43 0
|
23天前
|
Java 应用服务中间件 Maven
SpringBoot概述&SpringBoot基础配置&yml的使用&多环境启动
SpringBoot概述&SpringBoot基础配置&yml的使用&多环境启动
34 2
|
7月前
|
Java
springboot(若依)多模块获取yml属性
springboot(若依)多模块获取yml属性
127 0
|
1月前
|
Java Docker 容器
docker部署springboot指定yml文件
docker部署springboot指定yml文件
84 0
QGS
|
1月前
|
JSON Java 关系型数据库
手拉手Springboot获取yml配置文件信息
手拉手Springboot获取yml配置文件信息
QGS
45 1
|
11月前
|
Java
springboot优雅的获取yml配置
springboot优雅的获取yml配置
104 0
|
1月前
|
安全 JavaScript Java
你有没有觉得邮件发送人固定配置在yml文件中是不妥当的呢?SpringBoot 动态设置邮件发送人
你有没有觉得邮件发送人固定配置在yml文件中是不妥当的呢?SpringBoot 动态设置邮件发送人
71 0
|
1月前
|
Java Go 数据库
SpringBoot配置文件(properties & yml)
SpringBoot配置文件(properties & yml)