文章目录
- 一、YAML基本语法
- 二、YAML支持的数据格式
- 1.字面量:数字、字符串、布尔等不可再分的值
- 2.对象:即为键值对,key= value
- 3.数组:一组按顺序排列的值
- 三、读取yml配置文件
- 1.新建配置文件
- 2.添加配置文件对应的实体类
- 3.添加controller
- 四、测试
- 五、总结
一、YAML基本语法
- 以缩进代表层级关系;
- 缩进不能使用tab,只能用空格;
- 空格个数不重要,但是同一层级必须左对齐;
- 大小写敏感;
- 数据格式为,名称:(空格)值;
- 注释单行用#,只能注释单行;
二、YAML支持的数据格式
1.字面量:数字、字符串、布尔等不可再分的值
字符串默认不需要加单引号或者双引号,如果加双引号,它不会转义字符串里面的特殊字符,而加单引号,则会转义字符串里面的特殊字符,意思就是将特殊字符直接变为字符串输出。
代码如下(示例):
key1: 1
key2: true
2.对象:即为键值对,key= value
用冒号分隔键值对(Key: Value), Key需要顶格写,前面不能有空格,冒号后面需要有一个空格然后再跟值, 相同的缩进属于同一个map。
代码如下(示例):
server:
port: 8888
servlet:
context-path: /
3.数组:一组按顺序排列的值
用-来表示数组中的一个元素。
例子:
info:
mp:
configs:
- rpc-base-url: http://127.0.0.1:20000/
rpc-user: admin
rpc-password: admin
msgDataFormat: JSON
- rpc-base-url: http://127.0.0.1:20001/
rpc-user: admin
rpc-password: admin
msgDataFormat: JSON
三、读取yml配置文件
新建一个spring boot项目spring-boot-test,按照下面步骤操作。
1.新建配置文件
application.yml内容如下:
info:
mp:
configs:
- rpc-base-url: http://127.0.0.1:20000/
rpc-user: admin
rpc-password: admin
msgDataFormat: JSON
- rpc-base-url: http://127.0.0.1:20001/
rpc-user: admin
rpc-password: admin
msgDataFormat: JSON
server:
port: 8888
servlet:
context-path: /
2.添加配置文件对应的实体类
实体类添加注解,@ConfigurationProperties,@ConfigurationProperties注解可以自定义实体类,映射yml或者properties文件,自动为对象bean属性捆绑数据。
InfoProperties代码如下:
@Data
@ConfigurationProperties(prefix = "info.mp")
public class InfoProperties{
private List<MpConfig> configs;
@Data
public static class MpConfig {
/**
* 设置rpcBaseUrl
*/
private String rpcBaseUrl;
/**
* 设置rpcUser
*/
private String rpcUser;
/**
* 设置rpcPassword
*/
private String rpcPassword;
}
}
3.添加controller
添加读取yml文件的controller,打印yml配置信息,代码如下:
/**
* 读取yml文件的controller
*/
@Slf4j
@RestController
public class TestController {
@Value("${server.port}")
private Integer port;
@Autowired
private InfoProperties infoProperties;
@RequestMapping("/test")
public void test() {
log.info("server.port=" + port);
log.info("wxMpProperties=" + JSON.toJSONString(infoProperties));
}
}
四、测试
打开浏览器访问:http://localhost:8888/test,可看到后台已经打印了yml配置文件里的信息,说明读取成功。
日志内容如下:
server.port=8888
wxMpProperties={"configs":[{"rpcBaseUrl":"http://127.0.0.1:20000/","rpcUser":"admin","rpcPassword":"admin"},{"rpcBaseUrl":"http://127.0.0.1:20001/","rpcUser":"admin","rpcPassword":"admin"}]}
五、总结
SpringBoot读取yml配置的方式大致有3种方式
- @value
- @ConfigurationProperties
- @Environment
本文主要介绍的是第一种和第二种,第三种基本很少用到。
第一种最为简单,@value("${Json.String}")
例如:
Json:
String: spring
第二种则是本文主要讲解的。
到此SpringBoot读取yml配置文件功能已经全部实现,有问题欢迎留言沟通哦!