美文网首页
springboot读取配置工具类

springboot读取配置工具类

作者: 吟风者 | 来源:发表于2019-12-31 14:24 被阅读0次

    开发软件过程中很多时候需要获取配置文件中的属性配置信息,但是又不能使用@Value注解,或者工具类不存在相关的注解,那么就可以使用这个工具类来读取配置信息了。

    @Component
    public class Global {
        private static final Logger log = LoggerFactory.getLogger(Global.class);
    
        private final Environment environment;
        private static Environment env;
    
        /**
         * 保存全局属性值
         */
        private static Map<String, Object> map = new HashMap<>();
    
        @Autowired
        private Global(Environment env) {
            this.environment = env;
        }
    
        @PostConstruct
        public void init() {
            env = environment;
        }
    
        /**
         * 获取配置
         */
        public static String getConfig(String key) {
            Object o = map.get(key);
            String value = null;
            if (o instanceof String) {
                value = (String) o;
            }
            if (StringUtils.isEmpty(value)) {
                try {
                    value = env.getProperty(key);
    
                    map.put(key, StringUtils.isNotEmpty(value) && !"null".equals(value) ? value : StringUtils.EMPTY);
                } catch (Exception e) {
                    log.error("获取全局配置异常 {}", key);
                }
            }
            return StringUtils.isNotEmpty(value) && !"null".equals(value) ? value : StringUtils.EMPTY;
        }
    
        /**
         * 获取配置
         *
         * @param key   配置key
         * @param clazz 返回值类型
         * @param <T>   返回值泛型
         * @return 配置值
         */
        @Nullable
        @SuppressWarnings("all")
        public static <T> T getConfig(String key, Class<T> clazz) {
            T value = (T) map.get(key);
            if (value == null) {
                try {
                    value = env.getProperty(key, clazz);
                    map.put(key, value);
                } catch (Exception e) {
                    log.error("获取全局配置异常 {}", key);
                }
            }
            return value;
        }
    
        /**
         * 获取配置
         *
         * @param key          配置key
         * @param clazz        返回值类型
         * @param defaultValue 默认值
         * @param <T>          返回值泛型
         * @return 配置值
         */
        @SuppressWarnings("all")
        public static <T> T getConfig(String key, Class<T> clazz, T defaultValue) {
            Object o = map.get(key);
            T value = (T) map.get(key);
            if (value == null) {
                try {
                    value = env.getProperty(key, clazz, defaultValue);
                    map.put(key, value);
                } catch (Exception e) {
                    log.error("获取全局配置异常 {}", key);
                }
            }
            return value;
        }
    }
    
    

    源码地址:https://gitee.com/cnovel/demo/tree/master/readenv

    相关文章

      网友评论

          本文标题:springboot读取配置工具类

          本文链接:https://www.haomeiwen.com/subject/cpbboctx.html