「造个轮子」——cicada 设计一个配置模块 (2)

为了方便用户在使用时候可以随意的读取各个配置文件,所以还需要将反射创建的对象保存到一个内部缓存中,核心代码就是上上图中的这段代码:

// add configuration cache ConfigurationHolder.addConfiguration(aClass.getName(), conf);

其中 ConfigurationHolder 的定义如下。

「造个轮子」——cicada 设计一个配置模块

其实也是利用一个 Map 来存放这些对象。

这样在使用时候只需要取出即可。

KafkaConfiguration configuration = (KafkaConfiguration) getConfiguration(KafkaConfiguration.class); String brokerList = configuration.get("kafka.broker.list"); 重构

本次升级同时还重构了部分代码,比如启动类。

现在看上去要清爽和直接的多:

「造个轮子」——cicada 设计一个配置模块

其中也有一点需要注意的地方。

大家如果查看日志的话会发现应用启动之后会打印本次的耗时,自然就是在启动时候记录一个时间,初始化完毕之后记录一个即可。

「造个轮子」——cicada 设计一个配置模块

在之前的实现中由于都是在一个方法内,所以直接使用就行了。

但现在优化之后跨越了不同的方法和类,难道要把时间作为参数在各个方法之前传递嘛?

那未免太不优雅了。

所以 ThreadLocal 就有了发挥余地。

在初始化的方法中我将当前时间写入:

ThreadLocalHolder.setLocalTime(System.currentTimeMillis());

在最后记录日志的地方直接取出比较即可:

「造个轮子」——cicada 设计一个配置模块

这样使用起来就完全不需要管什么参数传递了。

同时 ThreadLocalHolder 的定义:

「造个轮子」——cicada 设计一个配置模块

这里还是有一点需要注意,在这种长生命周期的容器中一定得要记得及时清除

我这里的时间在查询一次之后就不用了,所以完全放心的在 getLocalTime() 方法中删掉。

总结

这就是本次 v1.0.2 中的升级内容,包含了配置支持以及代码重构。其中有些内容我觉得对接触少的同学来说还是挺有帮助的。

关于上两次的版本介绍请查看这里:

「造个轮子」——cicada(轻量级 WEB 框架)

「造个轮子」——cicada 源码分析

还没点关注的朋友可以点波关注:

https://github.com/TogetherOS/cicada

也欢迎大家参与一起维护!。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssxyj.html