EN | 中文
与nacos配置中心相似,可以动态的crud属性的值并实时更新。
高频率修改配置(如频繁改变第三方接口地址等)且不希望代码有较大幅度修改
1.支持注解注入配置,用法简单 2.最大程度降低代码的侵入性。 3.配置容器来源自由配置 4.配置增删改查基础功能兼具 5.轻量级插件,拒绝代码臃肿
本插件核心为一个容器-applicationConfigContext,使用本插件需要先初始化容器将配置信息查询出并置入容器,剩余其他操作接很简单。详情可看示例
<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>
<dependency>
<groupId>top.yoynong</groupId>
<artifactId>YConfig</artifactId>
<version>1.1.0.RELEASE</version>
</dependency>
config.center.group=defalut_env
@SpringBootApplication
@EnableYConfigConfiguration
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
如果需要aop配置功能,需要将@EnableYConfigConfiguration
注解替换为@EnableYConfigAopConfiguration
@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.获取当前分组的方式(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注解,为参数构造set方法
public class TestController {
//2. 为配置添加注解,注解值为该配置对应的的keyname
@MyConfig("opcl.url")
String url;
//3. 将当前对象传入注解
@MyConfig(clazz = TestController.class)
@GetMapping("1")
public Object test(){
return "val:" + url;
}
}