全部产品

动态配置快速入门

更新时间:2020-07-01 18:28:04

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

前置条件

  • 参考 搭建环境,完成环境配置。
  • 点击下载 示例工程,务必将示例工程主 pom.xml 文件的 SOFABoot 版本号改为最新版。

动态配置的使用

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

  1. 本地开发
  2. 启动应用
  3. 云端动态配置属性

本地开发

本地开发主要步骤如下:

  1. 在 SOFABoot 工程中,在待创建动态配置类的模块中,添加下述依赖,且无需关注该依赖版本。
    1. <dependency>
    2. <groupId>com.alipay.sofa</groupId>
    3. <artifactId>ddcs-enterprise-sofa-boot-starter</artifactId>
    4. </dependency>
  2. 进行安全配置:为保障中间件的安全性,所有的调用均需要验证访问者的身份,安全配置请参考 引入 SOFA 中间件

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

    1. @DObject(region = "AntCloud", appName = "dynamic-configuration-tutorial", id = "com.antcloud.tutorial.configuration.DynamicConfig")
    2. public class DynamicConfig {
    3. @DAttribute
    4. private String name;
    5. @DAttribute
    6. private int age;
    7. @DAttribute
    8. private boolean man;
    9. public void init() {
    10. DRMClient.getInstance().register(this);
    11. }
    12. public String getName() {
    13. return name;
    14. }
    15. public void setName(String name) {
    16. this.name = name;
    17. }
    18. public int getAge() {
    19. return age;
    20. }
    21. public void setAge(int age) {
    22. this.age = age;
    23. }
    24. public boolean isMan() {
    25. return man;
    26. }
    27. public void setMan(boolean man) {
    28. this.man = man;
    29. }[]()
    30. }

    代码说明:

    • 该配置类是一个普通的 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 配置。示例如下:

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

启动应用

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

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

云端动态配置属性

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