背景:
對於如今的配置系統,提供一個統一的客戶端來處理配置的更新刪除,更方便的使用以及維護
1、maven依賴:spring
<dependency> <groupId>com.lb.bs</groupId> <artifactId>lb-bs-client-core</artifactId> <version>2.0-SNAPSHOT</version> </dependency>
2、啓動方式:
一、spring啓動方式app
@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; }
二、simple啓動方式maven
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
註解進行注入,使用起來方便而簡單類型啓動方式,使用配置類比較麻煩。
2、配置類配置方式:ide
@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; } }
註釋:ui
@LBClass: 做用:做用在類上,標識這是一個配置類,能夠將將全部的配置統一寫在這裏,客戶端配置系統會掃描配置的包中標有該註釋的類。 groupName:分組名稱,改配置類的最頂級節點 enableGray:灰度標識,默認false不啓動灰度
@LBItem 做用:做用在方法上,標識獲取具體配置的方法,方便進行代理 key:具體的配置節點 value:默認值 associateField:關聯的屬性名稱,若是該方法是ide自動生成的,以get或者is開頭,能夠不寫 isLogPath:標識改節點是不是日誌節點,如果,在改節點變動的時候會同步變動日誌級別