本文是关于Spring Boot框架下读取配置文件的指南。该指南介绍了如何通过引入SnakeYaml包建立YamlUtil工具类,直接获取应用程序的yaml配置文件的配置信息。这种方法相对于使用@Value对象映射的方法,更加方便,封装性更好。下面将讲述详细流程,如有纰漏,敬请指正!欢迎评论区评论。
一、创建YamlUtil工具类
代码语言:javascript复制package com.util;
import org.apache.log4j.Logger;
import org.yaml.snakeyaml.Yaml;
import java.io.InputStream;
import java.util.Map;
public class YamlUtil {
private static final Logger log = Logger.getLogger(YamlUtil.class);
private static final String YAML_FILE_PATH = "application-dev.yml";
private static Map<String, Object> yamlData;
static {
loadYamlData();
}
private static void loadYamlData() {
Yaml yaml = new Yaml();
try (InputStream inputStream = YamlUtil.class.getClassLoader().getResourceAsStream(YAML_FILE_PATH)) {
yamlData = yaml.load(inputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
public static String getString(String key) {
Object value = getProperty(key);
if (value != null) {
return value.toString();
}
return null;
}
private static Object getProperty(String key) {
String[] keys = key.split("\.");
Object value = yamlData;
for (String k : keys) {
if (value instanceof Map) {
value = ((Map<?, ?>) value).get(k);
} else {
return null;
}
}
return value;
}
}
二、编写配置信息
我的配置信息如下:
application.yml
代码语言:javascript复制spring:
profiles:
active: dev
thymeleaf:
view-names: /*
cache: false
prefix: /WEB-INF/html
application-dev.yml
代码语言:javascript复制server:
port: 8080
spring:
datasource:
#替换成MySQL账户
username: root
#替换成MySQL密码
password: root
#替换成数据库名
url: jdbc:mysql://localhost:3306/db_monitor?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.jdbc.Driver
application:
## 注册服务名
name: MonitorSystem
mybatis:
mapper-locations: classpath:mappers/*Mapper.xml
type-aliases-package: com.entity
logging:
level:
com:
example:
mapper: debug
output:
file_path: output
三、使用工具类读取配置
代码语言:javascript复制String path = YamlUtil.getString("output.file_path");
我们可以在控制台输出检查读取结果,这里读取的结果是output。