spring boot项目如何通过代码去修改yml里面配置项的值?

spring boot项目如何通过代码去修改yml里面配置项的值?谢谢

这种可以不用yml文件,看具体需求,把配置存到数据库表中,项目启动时加载数据库中的配置

Spring有两种配置方式 JavaBean配置和配置文件配置,javaBean配置优先。你可以在代码里面用javaBean配置的方式修改。

<dependency>
  <groupId>org.yaml</groupId>
  <artifactId>snakeyaml</artifactId>
  <version>1.23</version>
</dependency>

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.util.Map;
import org.yaml.snakeyaml.Yaml;
public class YmlUpdateUtil {

public static void updateYamlFile() {
    String src = "src/main/resources/application.yml";
    Yaml yaml = new Yaml();
    FileWriter fileWriter = null;
    //层级map变量
    Map<String, Object> springMap, dataSourceMap, resultMap,helperDialect;
    try {
        //读取yaml文件,默认返回根目录结构
        resultMap = (Map<String, Object>) yaml.load(new FileInputStream(new File(src)));
        //get出spring节点数据
        springMap = (Map<String, Object>) resultMap.get("spring");
        //get出数据库节点数据
        dataSourceMap = (Map<String, Object>) springMap.get("datasource");
        //修改数据库url,我这个是封装的参数,你们测试可以写死一个值尝试修改即可
        dataSourceMap.put("url", "jdbc:mysql://192.168.2.80:3306/jksd?characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong&allowPublicKeyRetrieval=true");
        //登录名
        dataSourceMap.put("username", "root");
        //驱动
        dataSourceMap.put("driverClassName", "com.mysql.cj.jdbc.Driver");
        //密码
        dataSourceMap.put("password", "123456");
       // helperDialect = (Map<String, Object>) springMap.get("pagehelper");
      //  helperDialect.put("helperDialect", "sqlserver");
        //字符输出
        fileWriter = new FileWriter(new File(src));
        //用yaml方法把map结构格式化为yaml文件结构
        fileWriter.write(yaml.dumpAsMap(resultMap));
        //刷新
        fileWriter.flush();
        //关闭流
        fileWriter.close();
    } catch (Exception e) {
        e.printStackTrace();
        throw new RuntimeException("对不起,yaml文件修改失败!");
    }
}

}

可以修改但是没有更新 配置信息

为什么要修改配置文件的值呢