码迷,mamicode.com
首页 > 其他好文 > 详细

【非官方方式】获取Disconf动态更新的配置文件的值

时间:2019-10-29 20:02:22      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:ogg   logger   upd   方式   actor   更改   charset   string   span   

disconf可以配置reload,当更改配置时自动刷新classpath下的配置文件。然而获取最新的值官方说明是加@DisconfFileItem注解放在属性的方法上,底层通过拦截器获取的。

但是每个属性都要定义一个属性,其实是一件很繁琐的事情。

技术图片

 

所以,以下提供一种非官方实时获取最新值的方式。

 1 public class PropertiesUtils {
 2     private static final Logger logger = LoggerFactory.getLogger(PropertiesUtils.class);
 3     private static final String charset = "UTF-8";
 4     private static final Properties sysProp = new Properties();
 5     private static long lastModify = 0L;
 6     private static File system;
 7     private PropertiesUtils() {
 8         throw new IllegalAccessError("Utility class");
 9     }
10     static {
11         try {
12             system = new ClassPathResource("system.properties").getFile();
13             load(system.lastModified());
14         } catch (Exception e) {
15             logger.error("properties file load error",e);
16             throw new VmapRuntimeException(e);
17         }
18     }
19 
20     private static void load(long updateTime) {
21         try {
22             //注意清空,否则没有新值,会使用旧值
23             sysProp.clear();
24             //获取属性
25             sysProp.load(new InputStreamReader(new FileInputStream(system), charset));
26             //获取文件修改时间
27             lastModify = updateTime;
28         } catch (IOException e) {
29             throw new RuntimeException(e);
30         }
31     }
32 
33     
34     /**获取属性配置值
35      * @param name 名称
36      * @return
37      */
38     public static String getProp(String name) {
39         long modify = system.lastModified();
40         if (modify > lastModify) load(modify);
41         return  sysProp.getProperty(name);
42     }
43 }

这样获取配置就不需要每个都定义一个属性了。

【非官方方式】获取Disconf动态更新的配置文件的值

标签:ogg   logger   upd   方式   actor   更改   charset   string   span   

原文地址:https://www.cnblogs.com/jay763190097/p/11760895.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!