SpringBoot yaml数据

一、什么是yaml数据

二、yaml数据格式

1、语法规则:

2、字面值表示方式:

3、数组表示方式:在属性名书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔

总结:

三、yaml数据读取

主要有三种读取方式:

  • 单一数据读取:使用@Value配合SpEL读取单个数据,如果数据存在多层级,依次书写层级名称即可;

  • 封装数据读取:使用@Autowired注入得到自动封装了全部数据的Environment对象;

  • 利用Java对象封装数据,并通过对象实体类读取数据:使用@ConfigurationProperties将配置信息绑定至封装类中,封装类需定义为bean,否则无法注入。

推荐使用第三种方式。

示例:

controller:

@RestController
@RequestMapping("/yaml")
public class Yaml数据读取 {
    //单一数据注入
    @Value("${country}")
    private String country;
    @Value("${user.name}")
    private String name;
    @Value("${likes[1]}")
    private String likes1;
    @Value("${users[1].age}")
    private String age;
    @Value("${server.port}")
    private String port;
    @Value("${tempDir}")
    private String tempDir;

    //封装数据注入
    @Autowired
    private Environment environment;

    //封装了数据的实体类注入
    @Autowired
    private MyDatasource myDatasource;


    //读取yaml数据中的单一数据
    @GetMapping("/one")
    public String getOne() {
        System.out.println("springboot is running...");
        System.out.println("country===>"+country);
        System.out.println("name===>"+name);
        System.out.println("likes1===>"+likes1);
        System.out.println("age===>"+age);
        System.out.println("port===>"+port);
        System.out.println("tempDir===>"+tempDir);
        return "springboot is running...";
    }

    //以封装至Environment的方式全部读取
    @GetMapping("/all")
    public String getAll() {
        System.out.println("springboot is running...");
        System.out.println(environment.getProperty("country"));
        System.out.println(environment.getProperty("user.name"));
        System.out.println(environment.getProperty("likes[1]"));
        System.out.println(environment.getProperty("tempDir"));
        return "springboot is running...";
    }

    //以封装至实体类的方式读取数据
    @GetMapping("/pojo")
    public String getPojo() {
        System.out.println("springboot is running...");
        System.out.println(myDatasource);
        return "springboot is running...";
    }

}

pojo:

/*
   创建Java对象封装数据
 */
@Component //Bean化
@ConfigurationProperties(prefix = "datasource") //指定要封装的数据
public class MyDatasource {
    private String driver;
    private String url;
    private String username;
    private String password;

    @Override
    public String toString() {
        return "Datasource{" +
                "driver='" + driver + '\'' +
                ", url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public String getDriver() {
        return driver;
    }

    public MyDatasource setDriver(String driver) {
        this.driver = driver;
        return this;
    }

    public String getUrl() {
        return url;
    }

    public MyDatasource setUrl(String url) {
        this.url = url;
        return this;
    }

    public String getUsername() {
        return username;
    }

    public MyDatasource setUsername(String username) {
        this.username = username;
        return this;
    }

    public String getPassword() {
        return password;
    }

    public MyDatasource setPassword(String password) {
        this.password = password;
        return this;
    }


}

application.yml:

server:
  port: 8080

country: china

user:
  name: kvno
  age: 18

likes:
  - game
  - music
  - sleep

likes2: [game,music,sleep]

users:
  - name: zhangsan
    age: 18
  - name: lisi
    age: 17

users2:
  -
    name: zhangsan
    age: 18
  -
    name: lisi
    age: 17

users3: [{name:zhangsan,age:18},{name:lisi,age:17}]


baseDir: c:\win10
# 使用${属性名}引用数据
tempDir: ${baseDir}\temp
# 使用引号包裹的字符串,其中的转义字符 \t 可以生效
tempDir2: "${baseDir}\temp \t1 \t2 \t3"


# 创建Java实体类用于封装下面的数据
# 由spring帮我们加载数据至对象中,需要告知spring取加载目标信息
# 读取数据时直接从spring中获取信息

datasource:
  driver: com.mysql.cj.jdbc.Driver
  url: jdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true
  username: root
  password: mypassword

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值