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

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

以下正文:

1.自定义YamlConfigTool工具类

java 复制代码
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.定义公共的读取内容

java 复制代码
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(重要一步)

java 复制代码
   /**
     * 构建配置文件读取操作统一工具类
     */
    @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.测试

java 复制代码
@SpringBootTest
public class TestSomething {
    @Test
    void contextLoads() {
        System.err.println(CommonTool.RedieEnum.MANAGER_OFFICE);
    }
}
相关推荐
酷爱码25 分钟前
Spring Boot项目中JSON解析库的深度解析与应用实践
spring boot·后端·json
java干货1 小时前
虚拟线程与消息队列:Spring Boot 3.5 中异步架构的演进与选择
spring boot·后端·架构
武昌库里写JAVA4 小时前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
小白杨树树4 小时前
【WebSocket】SpringBoot项目中使用WebSocket
spring boot·websocket·网络协议
clk660711 小时前
Spring Boot
java·spring boot·后端
爱敲代码的TOM11 小时前
基于JWT+SpringSecurity整合一个单点认证授权机制
spring boot
loser.loser11 小时前
QQ邮箱发送验证码(Springboot)
java·spring boot·mybatis
喜欢踢足球的老罗12 小时前
在Spring Boot 3.3中使用Druid数据源及其监控功能
java·spring boot·后端·druid