java - 在 yaml 上更改并坚持使用 @Value 注释的属性的更改

标签 java spring yaml

假设我有一个用@Value 注释的类的属性

@RestController
public class MyController{
    @Value("${my.host}")
    protected String myHost;
...

我将此属性映射到我的 spring 配置 yml 文件中:

...
my.host: 10.0.103.144
my.port: 3003
...

有没有办法更改属性 myHost 中包含的值,并自动将其反射(reflect)在我的配置 yml 文件中,以使此更改持久化?

例如,用“anotherHost”调用它:

private changeHost(String newHost) {
    myHost = newHost;
}

在配置文件中会产生这样的结果:

...
my.host: anotherHost
my.port: 3003
...

最佳答案

我不知道有任何 Spring 机制可以自动更新配置文件。

但是,您可以将 Jackson 与 module that supports YAML 一起使用更新您的 YAML 配置文件。它将是这样的:

// Create an ObjectMapper mapper for YAML
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());

// Parse the YAML file
ObjectNode root = (ObjectNode) mapper.readTree(new File("/path/to/file.yml"));

// Update the value
root.put("my.host", "anotherHost");

// Write changes to the YAML file
mapper.writer().writeValue(new File("/path/to/file.yml"), root);

关于java - 在 yaml 上更改并坚持使用 @Value 注释的属性的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45637098/

相关文章:

java - 测试时忽略 Spring Controller 上的 PreAuthorize 注释

java - 我如何从ManyToMany表中获取值(value)?

parsing - YAML 有 ANTLR4 语法吗?

java - com :sun:tools:jar 的 AspectJ Maven 插件安装依赖错误

java - 为什么输出保持相同的多个输出?

java - 为什么变量的未定义泛型参数会删除其方法返回类型的显式泛型参数?

java - Spring 网关: how to dynamically set URI and path based on request headers and path

amazon-web-services - 云形成 : Value of property SsmAssociations must be of type List

python - 当对象来自 SQLAlchemy 时无法 pickle int 对象错误?

java - 在不知道名称的情况下如何解析 JSONObject?