乐趣区

zookeer配置客户端

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

<dependency>
    <groupId>com.lb.bs</groupId>
    <artifactId>lb-bs-client-core</artifactId>
    <version>2.0-SNAPSHOT</version>
</dependency>

二、启动方式:
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 = "hello_world", isLogPath = true)
    public String getLogPath() {return logPath;}

}

注释:

@LBClass:

作用: 作用在类上, 标识这是一个配置类,可以将将所有的配置统一写在这里,客户端配置系统会扫描配置的包中标有该注释的类。groupName: 分组名称,改配置类的最顶级节点

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

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

key: 具体的配置节点

value: 默认值

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

isLogPath: 标识改节点是否是日志节点,若是,在改节点变更的时候会同步变更日志级别
退出移动版