当前位置: 首页 > article >正文

通过YamlPropertiesFactoryBean构建配置文件读取工具类

可以看一下介绍,这里只提供实现代码。—> 多种yml/properties配置文件读取方式

以下正文:

1.自定义YamlConfigTool工具类


import java.util.Arrays;
import java.util.List;
import java.util.Properties;

public class YamlConfigTool {

    private static Properties ymlProperties = new Properties();

    public static Properties getYmlProperties() {
        return ymlProperties;
    }

    public static void setYmlProperties(Properties ymlProperties) {
        YamlConfigTool.ymlProperties = ymlProperties;
    }

    public static YamlConfigTool create(Properties properties) {
        return new YamlConfigTool(properties);
    }

    /**
     * 有参构造
     * @param properties
     */
    public YamlConfigTool(Properties properties) {
        setYmlProperties(properties);
    }

    public static String getStr(String key) {
        return ymlProperties.getProperty(key);
    }

    public static Integer getInt(String key) {
        return Integer.valueOf(ymlProperties.getProperty(key));
    }

    public static Boolean getBoo(String key) {
        return Boolean.valueOf(ymlProperties.getProperty(key));
    }

    public static List<String> getList(String key) {
        return Arrays.asList(ymlProperties.getProperty(key).split(","));
    }

2.定义公共的读取内容


import org.springframework.stereotype.Component;

/**
 * @author 多个接口以区分对应的配置
 * @date 2020-03-04 11:02
 */
@Component
public class CommonTool {

    /**
     * 可以多个接口,也可以多个类,用于区分
     */
    public interface RedieEnum{
      
        String MANAGER_OFFICE = YamlConfigTool.getStr("AAAAA.BBBB");

    }


    //其他需要通过统一工具返回的内容
    //public static Db getDb(String type) {
    //    return Db.use(DSFactory.get(type));
    //}
    //
    //public static Session getSession(String type) {
    //    return Session.create(DSFactory.get(type));
    //}
}

3.重写YamlPropertiesFactoryBean(重要一步)

   /**
     * 构建配置文件读取操作统一工具类
     */
    @Value("${spring.profiles.active}")
    private String profilesActive;

    @Bean
    public YamlConfigTool ymlConfigurerUtil() {
        //1:加载配置文件
        YamlPropertiesFactoryBean yamlPropertiesFactoryBean = new YamlPropertiesFactoryBean();
        // 2:将加载的配置文件交给 YamlPropertiesFactoryBean
        yamlPropertiesFactoryBean.setResources(new ClassPathResource("application.yml"), new ClassPathResource(StrUtil.format("application-{}.yml", profilesActive)));
        // 3:将yml转换成 key:val
        Properties properties = yamlPropertiesFactoryBean.getObject();
        // 4: 将Properties 通过构造方法交给我们写的工具类
        return new YamlConfigTool(properties);
    }

4.测试

@SpringBootTest
public class TestSomething {
    @Test
    void contextLoads() {
        System.err.println(CommonTool.RedieEnum.MANAGER_OFFICE);
    }
}

http://www.kler.cn/a/280227.html

相关文章:

  • Java语言程序设计基础篇_编程练习题***17.9 (地址簿)
  • Cobalt Strike 4.8 用户指南-第四节-监听器和基础设施管理
  • Nginx: 代理场景下Nginx接收用户请求包体的处理
  • 程序化交易接入怎么样
  • 《黑神话:悟空》霸屏全球,Gooxi喊你一起“直面天命”
  • 山东大数据职称考试复习
  • 对于 OpenAI 最新发布 支持实时语音对话的模型GPT-4o,我想说
  • PTA - C语言国庆题集2
  • 构建高效NLP管道:PydanticOutputParser与Langchain的结合
  • Linux rocky 9.2 安装mysql-8.0.39-linux-glibc2.28-x86_64.tar.xz
  • 内网横向移动常用方法
  • 冒泡排序详细说明(内含动态演示图)
  • pg数据库的三种不同数据持久性解读
  • 不可不知的DP协议过往史
  • uniapp中路由的基本使用方法、参数传递方式以及路由拦截与权限控制
  • Nginx: 负载均衡基础配置, 加权轮序, hash算法, ip_hash算法, least_conn算法
  • ensp 中 wlan 的配置过程和示例
  • 2023年最新自适应主题懒人网址导航v3.9php源码
  • Java面试宝典-java基础05
  • KDD2024重磅奖项出炉:“最大奖项”创新奖花落加州大学Lise Getoor,李骏东摘得新星奖