背景:
对于现在的配置系统,提供一个统一的客户端来处理配置的更新删除,更方便的使用以及维护
一、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: 标识改节点是否是日志节点,若是,在改节点变更的时候会同步变更日志级别