程序员技术交流互联网科技IT@程序员猿媛

开源分布式配置组件conf使用教程

2019-05-01  本文已影响106人  程序员Sunny

本文主要用于说明开源分布式配置组件conf的优势和用法。
相关文章:本地配置注解读取——开源组件Conf
conf项目地址:https://github.com/zsunny6658/conf

优势

  1. 该组件主要用于获取项目本地配置(后期还会对远程配置进行支持)。
  2. 支持配置文件格式类型有:properties、xml、yml(yaml)、json。
  3. 支持动态配置,无需重启应用即可生效配置。
  4. 支持对类配置的支持。
  5. 支持事前事后监听器。
  6. 支持自定义配置文件名。

用法

第一步

github上下载该项目的release或者将项目源码导入。

第二步

使用命令将conf加入本地仓库,此处以1.1版本为例,文件名为conf-1.1.jar,:

mvn install:install-file -Dfile=conf-1.1.jar -DgroupId=com.sunny -DartifactId=conf -Dversion=1.1 -Dpackaging=jar
第三步

在项目的pom.xml中加入依赖:

<dependency>
  <groupId>com.sunny</groupId>
  <artifactId>conf</artifactId>
  <version>1.1</version>
</dependency>
第四步

在项目中使用,具体使用方法可参考项目的readme。
本文仅作展示一些简单用法,因为使用的是conf1.1版本,所以还不支持@Dynamic注解和动态配置。
本文中使用两个类作为测试类,分别命名为Example、ExampleClass,前者用于测试普通配置项,后者用于测试类配置项。
Example的主要内容为:

@ConfSource("classpath: configer.properties")
public class Example {
    @ConfPath("other.file.configer")
    private static String other;
    @ConfPath("server.port")
    private static String port;
    @SystemConfPath("system.conf.active")
    private static String active;
    public static void printPort(){
        System.out.println("other:" + other);
        System.out.println("prop-port:" + port);
        System.out.println("prop-active:" + active);
    }
}

ExampleClass的主要内容为:

@ConfClass
@ConfClassPrefix("test.")
public class ExampleClass {
    private static String a;
    private static String b = "2";
    @ConfClassIgnore
    private static String c;
    @ConfClassDefault("ddddd")
    private static String d;
    @ConfClassAlias("d")
    private static String e;
    public static void print(){
        System.out.println("class-a:" + a);
        System.out.println("class-b:" + b);
        System.out.println("class-c:" + c);
        System.out.println("class-d:" + d);
        System.out.println("class-e:" + e);
    }
}

测试内容非常简单,主要是声明了一些静态变量,和一个print方法用于打印类中变量的值。

第五步

添加配置文件,为了体现对各种配置文件的支持,使用五个配置文件,application.properties、application.xml、application.yml、application-prod.xml和configer.properties。前三者为系统默认配置支持;第四个为系统active配置,需要在配置中指明;第五个为自定义配置文件。在application.properties、application.xml和application-prod.xml中分别设置server.port配置。
application.properties的配置内容为:

server.port=222

application.xml的配置内容为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <comment>系统配置</comment>
    <entry key="server.port"><![CDATA[123456]]></entry>
</properties>

application.yml的配置内容为:

server:
  port: 111
system:
  conf:
    active: prod
test:
  a: 1
  b: 2
  c: 3
  d: 5

application-prod.xml的配置内容为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <comment>系统配置</comment>
    <entry key="server.port"><![CDATA[789]]></entry>
</properties>

configer.properties的配置内容为:

other.file.configer=this is other file configer

其中,各配置文件的默认优先级为:
active >> customize = xml > yml > yaml > properties
此处为:
application-prod.xml > configer.properties = application.xml > application.yml > application.properties

第六步

运行测试,使用测试类Test,其主要内容为:

public class Test {
    public static void main(String[] args) {
        ConfStarter.start();
        Example.printPort();
        ExampleClass.print();
    }
}

最终得到运行结果为:

other:this is other file configer
prop-port:789
prop-active:prod
class-a:1
class-b:2
class-c:null
class-d:ddddd
class-e:5

联系与交流

欢迎小伙伴与我讨论哦~

邮箱:zsunny@yeah.net

本文欢迎转载,请注明本文地址:https://www.jianshu.com/p/3336ed9130c3

上一篇下一篇

猜你喜欢

热点阅读