【发布时间】:2021-02-09 06:48:24
【问题描述】:
我有一个 yaml 文件,其中包含要从环境变量中获取的占位符。我想将其解析为自定义类。目前我正在使用snakeyaml 库来解析它并正确填充bean,如何使用snakeyaml 或Java 中的任何其他库来解析环境变量。
datasource:
url: {url_environment_variable}
foo: bar
username: {user_name_environment_variable}
password: {password_environment_variable}
@Getter
@Setter
public class DataSource {
private String url;
private String foo;
private String username;
private String password;
}
下面的解析代码
Constructor c = new Constructor(MyDataSource.class);
Yaml yaml = new Yaml(c);
MyDataSource myData = yaml.loadAs(inputStream, MyDataSource.class);
问题是我还没有找到解决占位符的方法。人们能够使用python解决它并且有问题 - How to replace environment variable value in yaml file to be parsed using python script
我怎样才能在 Java 中做同样的事情。如果需要,我可以添加新的依赖项。 PS - 这不是 Spring Boot 项目,因此不能使用标准的 Spring 占位符替换。
【问题讨论】:
-
我认为你需要一个显式的getter,里面有
System.getEnv()。