YConfig - 非侵入性配置中心插件
介紹
與nacos配置中心相似,可以動態(tài)的crud屬性的值并實時更新。
使用場景
高頻率修改配置(如頻繁改變第三方接口地址等)且不希望代碼有較大幅度修改
優(yōu)勢:
1.支持注解注入配置,用法簡單
2.最大程度降低代碼的侵入性。
3.配置容器來源自由配置
4.配置增刪改查基礎(chǔ)功能兼具
5.輕量級插件,拒絕代碼臃腫
使用
0.前言
本插件核心為一個容器-applicationConfigContext,使用本插件需要先初始化容器將配置信息查詢出并置入容器,剩余其他操作接很簡單。詳情可看示例
1.引入依賴
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
如果使用aop配置,需要額外添加依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2.引入本插件jar包或依賴
<dependency>
<groupId>top.yonyong</groupId>
<artifactId>YConfig</artifactId>
<version>1.1.0.RELEASE</version>
</dependency>
3.配置文件寫好配置環(huán)境
config.center.group=defalut_env
4.啟動類添加注解開關(guān)開啟插件
@SpringBootApplication
@EnableYConfigConfiguration
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
如果需要aop配置功能,需要將@EnableYConfigConfiguration注解替換為@EnableYConfigAopConfiguration
5.初始化demo
@Controller
public class InitJob{
@Resource
private DefaultYConfigHandlerFactory defaultYConfigHandlerFactory;
public Object init(){
List<Config> list = new ArrayList<>();
Config config = Config.builder().keyName("opcl.url").keyValue("localhost:8080/opcl2.0").build();
Config config2 = Config.builder().keyName("3A.url").keyValue("localhost//3A.url").build();
Config config3 = Config.builder().keyName("MDM.url").keyValue("localhost:8888/MDM").build();
list.add(config);
list.add(config2);
list.add(config3);
defaultYConfigHandlerFactory.setVals(list);
//或者
defaultYConfigHandlerFactory.setV(list);
defaultYConfigHandlerFactory.commit();
return "SUC";
}
}
獲取配置
方式一
@RestController
@RequestMapping("/test")
public class TestController {
//1. 注入配置容器applicationConfigContext,注意名稱是我寫死的,不能變
@Resource
ConfigContext applicationConfigContext;
@GetMapping("get")
public Object get(){
//2.獲取當(dāng)前分組的方式(config.center.group=defalut_env)
final String group = applicationConfigContext.getGroup();
return group;
}
@GetMapping("getval/{val}")
public Object getVal(@PathVariable String val){
//3.獲取普通配置的方式
final String group = applicationConfigContext.getValue(val);
return group;
}
}
方式二,此方法需要開啟注解配置功能
@RestController
@RequestMapping("/test")
@Data //1.添加data注解,為參數(shù)構(gòu)造set方法
public class TestController {
//2. 為配置添加注解,注解值為該配置對應(yīng)的的keyname
@MyConfig("opcl.url")
String url;
//3. 將當(dāng)前對象傳入注解
@MyConfig(clazz = TestController.class)
@GetMapping("1")
public Object test(){
return "val:" + url;
}
}
項目地址
github: https://github.com/yonyong/YConfig.git
gitee: https://gitee.com/yonyong/YConfig.git
浙公網(wǎng)安備 33010602011771號