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文件修改失败!");
}
}
}
可以修改但是没有更新 配置信息
为什么要修改配置文件的值呢