背景:
对于现在的配置系统,提供一个统一的客户端来处理配置的更新删除,更方便的使用以及维护
一、依赖及源码
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:标识该节点是否是日志节点,若是,在该节点变更的时候会同步变更日志级别
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。