Skip to content

Latest commit

 

History

History
135 lines (117 loc) · 3.8 KB

readme_zh.md

File metadata and controls

135 lines (117 loc) · 3.8 KB

EN | 中文

YConfig - 非侵入性配置中心插件

介绍

与nacos配置中心相似,可以动态的crud属性的值并实时更新。

使用场景

高频率修改配置(如频繁改变第三方接口地址等)且不希望代码有较大幅度修改

优势:

1.支持注解注入配置,用法简单 2.最大程度降低代码的侵入性。 3.配置容器来源自由配置 4.配置增删改查基础功能兼具 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.yoynong</groupId>
    <artifactId>YConfig</artifactId>
    <version>1.1.0.RELEASE</version>
</dependency>

3.配置文件写好配置环境

config.center.group=defalut_env

4.启动类添加注解开关开启插件

@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.获取当前分组的方式(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;
    }
}

博客

blog地址: https://www.cnblogs.com/yonyong/p/13339583.html