之前 我们讲过 boot的配置文件格式主要有三种
application.properties
application.yml
application.yaml
我们说推荐用
application.yml
其实从 xml 到 yml 都是要系统去读取他的配置信息 今天 我们就来写一下 在java中读取 yml的配置
这里 我在 yml中多加两个配置
代码如下
min: 1
users:
name: 小猫猫
然后 我们实在在 启动类同目录下创建 controller 文件夹 然后下面创建一个UserController类 这里 我已经建好了
然后在UserController中编写代码如下
package com.example.threshold.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
//声明Controller控制器
@RestController
@RequestMapping("/user")
public class UserController {
@Value("${min}")
private String minput;
// 设置一个 GET接口 子路径get 接受一个id参数 id要跟在路径后面
@GetMapping
public String getId() {
return minput;
}
}
这里 我们通过Value标识符 读取了配置文件中的min 定义了一个字符串类型的minput来接受返回的值
因为这是我们自己定义的一个值 他只会帮我读成字符串 所以要用字符串类型接
然后 我们定义了一个 get的方法 向外返回拿了配置文件中min值的minput
然后 我们启动项目 访问暴露的接口
可以看到 min的值 我们就拿到了
那么 如果是这样的两级数据呢?
其实很简单 就像取json的值一样
XX.XX
我们将UserController类的代码修改如下
package com.example.threshold.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
//声明Controller控制器
@RestController
@RequestMapping("/user")
public class UserController {
@Value("${users.name}")
private String UserName;
// 设置一个 GET接口 子路径get 接受一个id参数 id要跟在路径后面
@GetMapping
public String getId() {
return UserName;
}
}
取users下的name 那就直接 users.name 如果还有层级 那就继续往后加点
然后 我们重新启动 访问接口
也是没有什么问题
然后 我们在yml中加一个
list:
- eml
- ts
- vue
数组类型的
我们用下标访问 改写 UserController 代码如下
package com.example.threshold.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
//声明Controller控制器
@RestController
@RequestMapping("/user")
public class UserController {
@Value("${list[0]}")
private String ListTom;
// 设置一个 GET接口 子路径get 接受一个id参数 id要跟在路径后面
@GetMapping
public String getId() {
return ListTom;
}
}
直接获取list的0下标
然后返回 我们访问接口
成功拿到了list的0下标