全部产品

动态配置快速入门

更新时间:2021-02-09 10:33

动态配置(DRM)功能是基于 SOFABoot 工程实现的。本文的讲述分为下述几个部分:

前置条件

  • 参考 搭建环境,完成环境配置。

  • 单击下载 示例工程,务必将示例工程主 pom.xml 文件的 SOFABoot 版本号改为最新版。

动态配置的使用

动态配置功能的使用,分为以下步骤:

  1. 本地开发

  2. 启动应用

  3. 云端动态配置属性

本地开发

本地开发主要步骤如下:

  1. 在 SOFABoot 工程中,在待创建动态配置类的模块中,添加下述依赖,且无需关注该依赖版本。

    <dependency>
         <groupId>com.alipay.sofa</groupId>
         <artifactId>ddcs-enterprise-sofa-boot-starter</artifactId>
    </dependency>
  2. 进行安全配置:为保障中间件的安全性,所有的调用均需要验证访问者的身份,安全配置请参考 引入 SOFA 中间件

  3. 创建动态配置类,配置类代码示例:

    @DObject(region ="AntCloud", appName ="dynamic-configuration-tutorial", id ="com.antcloud.tutorial.configuration.DynamicConfig")
        public class DynamicConfig{
    
            @DAttribute
            private String name;
    
            @DAttribute
            private int age;
    
            @DAttribute
            private boolean man;
    
            public void init(){
                DRMClient.getInstance().register(this);
            }
    
            public String getName(){
                return name;
            }
    
            public void setName(String name){
                this.name = name;
            }
    
            public int getAge(){
                return age;
            }
    
            public void setAge(int age){
                this.age = age;
            }
    
            public boolean isMan(){
                return man;
            }
    
            public void setMan(boolean man){
                this.man = man;
            }
        }

    代码说明:

    • 该配置类是一个普通的 Java 类,要符合 Java Bean 的规范,有若干私有属性,属性有对应的 getset 方法。例如上面的 nameageman,称为资源属性,资源属性只允许 String 和基本类型。

    • 在配置类上加上 @DObject 注解,注意它的包名是 com.alipay.drm.client.api.annotation@DObject 需要提供属性 idregionappName

      • id:是全站唯一的字符串,一般用全类名来保证唯一,如不设值,则默认为全类名。

      • region:用于区分不同组织的域,如可为每个子公司设定独立域。

      • appName:是应用名。

    • 在资源属性上加上 @DAttribute 注解。注意包名同样是 com.alipay.drm.client.api.annotation

    • 动态配置框架将通过反射的方式调用 getset 方法,从而读写资源属性。在特殊应用场景下,允许改变 getset 方法的内容,但是不可以修改方法的形式(方法名、参数、返回值)。因为系统启动时动态配置框架会检查该属性是否符合 Java Bean 的规范,如果不符合,会跳过注册这个属性。

    • 提供两个可选的注解 @BeforeUpdate@AfterUpdate。如果需要在每个属性更新前或更新后执行统一的操作,例如打印日志,可以提供参数 (String,Object) 和无返回值的方法,并打上相应注解。

      说明

      这两个方法被调用时,传入的参数都是属性名和本次 set 方法的入参,并不是对应的私有属性更新前和更新后的值。这两个方法只适合用来执行打日志等次要任务,真正的业务逻辑要放在 set 方法中。

    • 调用 register 方法注册到动态配置客户端后,即可享受服务端动态修改数据后的秒级推送能力。

  4. 进行 xml 配置。示例如下:

    <bean id="dynamicConfig" class="com.antcloud.tutorial.configuration.tutorial.config.DynamicConfig" init-method="init"/>

启动应用

启动应用,分为 2 种情形:

  • 本地启动:启动本地开发所完成的 SOFABoot 工程。

  • 将本地工程打包后发布到云端启动。详情参见 SOFABoot 快速开始下的 云端运行

云端动态配置属性

前往微服务控制台进行动态配置项的创建、管理与推送操作,实现在不重启应用的情况下,完成配置的动态更新。详情参见 新增动态配置推送动态配置