当先锋百科网

首页 1 2 3 4 5 6 7

spring boot yaml配置文件参数根据程序动态改变

我们的需求是会有不同的数据库,包括oracle,mysql等等,所以yaml文件不能写死读某个库,需要前端切换数据库的时候把配置文件查询库也要切换到对应的上面

话不多说,直接上代码,觉得有帮助的记得点个赞

@SuppressWarnings("all")
    public static void updateYamlFile(DatabaseConnect connect) {
        String src = "src/main/resources/application-dev-mysql.yml";
        Yaml yaml = new Yaml();
        FileWriter fileWriter = null;
        //层级map变量
        Map<String, Object> springMap, dataSourceMap, resultMap;
        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", connect.getUrl());
            //登录名
            dataSourceMap.put("username", connect.getUsername());
            //密码
            dataSourceMap.put("password", connect.getPassword());
            //字符输出
            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文件修改失败!");
        }
    }