背景:

对于现在的配置系统,提供一个统一的客户端来处理配置的更新删除,更方便的使用以及维护

一、依赖及源码

maven依赖:
<dependency>
    <groupId>com.lb.bs</groupId>
    <artifactId>lb-bs-client-core</artifactId>
    <version>2.0-SNAPSHOT</version>
</dependency>
源码地址:
https://github.com/abxworld/LB-BS-Client

二、启动方式:
1、spring启动方式

  @Bean
    public SpringStarter getSpringStarter(Environment environment) {
        String zkHost = environment.getProperty("zk.host");
        SpringStarter springStarter = new SpringStarter();
        StaticConfig config = StaticConfig.builder()
                .appendNameSpace("test/zookeeper")
                .appendScanPackages("com.lb.bs.demo")
                .appendZkHost(zkHost)
                .build();
        springStarter.appendStaticConfig(config);
        return springStarter;
    }

2、simple启动方式

StaticConfig staticConfig = StaticConfig.builder()
                 .appendNameSpace("test/zookeeper")
                .appendZkHost("106.111.111.111:2181")
                .appendScanPackages("com.lb.bs.demo")
                .build();
        new SimpleStarter()
                .appendStaticConfig(staticConfig)
                .start();
区别:
主要是配置类获取方式的区别,spring启动方式可以是依赖spring的组件的,在使用具体的配置类时可以使用spring提供的@Autowired注解进行注入,使用起来方便而简单类型启动方式,使用配置类比较麻烦。

二、配置类配置方式:

@LBClass(groupName = "/lb")
@Component
public class Student {
    private Integer id;

    private String name;

    private String logPath;

    private boolean young;

    @LBItem(key = "/student/id", value = "10")
    public Integer getId() {
        return id;
    }

    @LBItem(key = "/student/young", value = "false")
    public boolean getYoung() {
        return young;
    }

    @LBItem(key = "/student/name", value = "hello_world")
    public String getName() {
        return name;
    }

    @LBItem(key = "/student/logPath", value = "info", isLogPath = true)
    public String getLogPath() {
        return logPath;
    }

}

注释:

@LBClass:

作用:作用在类上,标识这是一个配置类,可以将将所有的配置统一写在这里,客户端配置系统会扫描配置的包中标有该注释的类。

groupName:分组名称,改配置类的最顶级节点

enableGray:灰度标识,默认false不启动灰度
@LBItem

作用:作用在方法上,标识获取具体配置的方法,方便进行代理

key:具体的配置节点

value:默认值

associateField:关联的属性名称,如果该方法是ide自动生成的,以get或者is开头,可以不写

isLogPath:标识该节点是否是日志节点,若是,在该节点变更的时候会同步变更日志级别

bsworld
1 声望0 粉丝

没什么好介绍的


« 上一篇
ab压测使用