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

  • 时间:
  • 浏览:0
  • 来源:uu直播快3平台_UU快3直播官方

   public static void main(String[] args) throws Exception {

不过原先的实现和当前 cicada 的定义其他冲突,我能尽量小的依赖第三方组件都还可以 都还可以 详细独立运行。

   }

public class RedisConfiguration extends AbstractCicadaConfiguration {

后来基于原先的情形便有了以下的实现。

当然这里有个前提:代码里配置的文件名时需得和配置文件名称相同。

一块儿将 cicada 升级到了 v1.0.2

-Dapplication.properties=/xx/application.properties

// add configuration cache

要实现以上的功能有十几条 核心点:

通过 get() 法律措施 直接获取配置。

最终实在还是按照我前一天的想法来做了你你這個 配置管理。

       CicadaServer.start(MainStart.class) ;

一块儿为了支持在不同环境的使用,当配置了启动参数后来优先读取。

那怎样在业务中读取你你這個 个多多配置文件的内容呢?

在看实现前一天先看看基于目前的配置管理怎样在业务中使用起来。

-Dredis.properties=/xx/redis.properties

在前两次的 cicada 版本中实在还不支持读取配置文件,比如对端口、路由的配置。

KafkaConfiguration configuration = (KafkaConfiguration) getConfiguration(KafkaConfiguration.class);

ThreadLocalHolder.setLocalTime(System.currentTimeMillis());

       CicadaServer.start(MainStart.class,"/cicada-example") ;

其他 ThreadLocal 全是了发挥余地。

本次升级一块儿还重构了帕累托图代码,比如启动类。

使用灵活。对使用者来说暂且有越多的束缚。





我这里的时间在查询一次前一天就越多了,其他详细放心的在 getLocalTime() 法律措施 中删掉。

一块儿也支持获取 application.properties 里的配置。

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

在做前一天是要把需求想好,到底怎样的一个多多多配置管理是对开发人员来说比较友好的?

}



为了方便用户在使用前一天能都还可以 随意的读取各个配置文件,其他还时需将反射创建的对象保存到一个多多多内内外部缓存中,核心代码后来上上图中的这段代码:

实在也是利用一个多多多 Map 来存放哪些地方地方对象。

   }



       super.setPropertiesName("redis.properties");

一块儿在这里也体现出优先读取的是 VM 启动参数中的配置文件。



时需额外提其他的是:在查找所有用户自定义的配置管理类时时需手动将 cicada内置的 ApplicationConfiguration 加入其中。

public class MainStart {

}

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

这也简单,代码一看就懂:

后来前一天后来调用了

加载所有配置文件。



public class MainStart {

}

后来 cicada 时需支持多个配置文件,所有时需定义一个多多多抽象类供所有的配置管理实现。

那未免太不优雅了。

原先使用起来就详细不时需管哪些地方参数传递了。

按照原先的配置也会默认从 classpath 读取你你這個 个多多配置文件。

       super.setPropertiesName("kafka.properties");

来赋值配置文件名称,其他还时需在遍历过程中将 Properties 进行赋值。

   }

在前一天的实现中后来全是在一个多多多法律措施 内,其他直接使用就行了。

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

其中 ConfigurationHolder 的定义如下。

   public RedisConfiguration() {

后来使用应用的包名通过反射是查询什么都这样该类的。

后来我按照另一方的想法创建了一个多多多 issue ,也挂接到了其他很不错的建议。

接着后来在初始化时时需找出所有继承了 AbstractCicadaConfiguration 的类。

   public static void main(String[] args) throws Exception {

查询出来前一天自然是要进行遍历一块儿反射创建对象。

文件名称:用于初始化时通过名称加载配置文件。

ConfigurationHolder.addConfiguration(aClass.getName(), conf);

public class KafkaConfiguration extends AbstractCicadaConfiguration {

一块儿也新增了一个多多多 api。

其中全是其他时需注意的地方。

   public KafkaConfiguration() {



将不同的配置文件用不同的对象进行管理。

定义比较简单,其中一个多多多多重要的成员变量:

原先在使用前一天只时需取出即可。

原先在不传默认地址的前一天 cicada 会从 application.properties 中读取。



   }

使用也比较简单,只时需继承 cicada 提供的一个多多多抽象类即可。

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

}

理论上来说配置你你這個 东西应当详细独立出来,由一个多多多配置中心来负责管理后来原先能都还可以 与应用解耦。

考虑到后边可维护的情形, cicada 也支持配置各种不同的配置文件。

能都还可以 自定义配置,后来支持不同的环境(开发、测试、生产)。

亲戚亲戚朋友后来查看日志搞笑的话会发现应用启动之都会打印本次的耗时,自然后来在启动前一天记录一个多多多时间,初始化完毕前一天记录一个多多多即可。

首先时需通过 ConfigurationHolder 获取每个人 不同配置的管理对象(时需显式指定类类型)。

-Dkafka.properties=/xx/kakfa.properties



Properties 实在后来一个多多多 Map 底部形态的缓存,用于存放所有的配置。当然对外提供的查询是基于它的。

String brokerList = configuration.get("kafka.broker.list");

提供简易的接口使用。

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

一块儿 ThreadLocalHolder 的定义:

我认为有以下几点:

结合现在亲戚亲戚朋友使用 SpringBoot 的习惯, cicada 默认会读取 classpath 下的 application.properties 配置文件。后来会默认读取其中的应用端口以及初始路由地址。

原先否是基本实现了上述的配置要求。

super.setPropertiesName("redis.properties");

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