yaml学习
yaml
语言的文件后缀名为
.yml
,和 json 一样是配置文件。
date: 2018-01-01t16:59:43.10-05:00
配置文件十分简洁,与 json 相比,不用频繁的写
{}
和
[]
,毕竟
换行
和
-
符号更加简洁,字符串也不需要频繁的加引号(无论是单引号还是双引号)。
#application.yml
animal: dogs
homeAddress:
province: 安徽省
city: 阜阳市
county: 利辛县
detail: 东南路1000000000号
转换为 json 为:
"animal": "dogs",
"homeAddress": {
"province": "安徽省",
"city": "阜阳市",
"county": "利辛县",
"detail": "东南路1000000000号"
#application.yml
animals:
- dogs
- cats
- pigs
- ducks
转换为 json 为:
"animals": [
"dogs",
"cats",
"pigs",
"ducks"
#application.yml
# 正常情况下字符串不用写引号
spring:
datasource:
username: root
password: root
# 字符串内有空格或者特殊字符时需要加引号
spring:
datasource:
url: "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false"
#application.yml
#.yml 中 ~ 表示 null
data: ~
转换为 json 为:
"data": null
SpringBoot配置yaml
我们学习了yaml的语法规则,希望在spring boot项目中能够提示读取配置文件。
<!--SpringBoot的application配置组件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
WxConfig.java
package com.example.demo.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
* @author zby
* @datetime 2022/7/27 17:23
* @desc 配置微信配置信息
@ConfigurationProperties(prefix = "wx")
@Data
public class WxConfig {
private String appId;
private String appKey;
private String secret;
DemoApplication .java
编写WxConfig .java
之后,需要在启动程序【DemoApplication .java】
中引入该类,否则编辑器会报出错误。
package com.example.demo;
import com.example.demo.demo.config.WxConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@SpringBootApplication
@EnableConfigurationProperties(WxConfig.class)
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
配置文件已有提示
package com.example.demo.demo;
import com.example.demo.demo.config.WxConfig;
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 WxConfig wxConfig;
@Test
void contextLoads() {
System.out.println(wxConfig);