微服务-Nacos配置管理之配置热更新

前言:Nacos不仅可以作为注册中心,还可以作为配置中心,这点优于eureka。这里介绍一下Nacos的配置热更新方法

Nacos配置热更新

我们引入Nacos配置中心的最终目的,是修改nacos中的配置后,微服务中无需重启即可让配置生效,也就是配置热更新。
要实现配置热更新,可以使用两种方式:

第一种方法(不推荐)

@RefreshScope+@Value()注解实现
image

第二种方法 (推荐)

使用@ConfigurationProperties(prefix = ""),并声明一个对象去映射yml的内容即可

@Component
@Data //lombok
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
    private String username;
    private String password;
}

调用直接注入对象即可

 @Autowired
 private JdbcProperties jdbcProperties;

注:

  1. 第一种不推荐,因为@RefreshScope在某些版本会不生效
  2. 这里说一下@ConfigurationProperties为什么可以做到热更新
    这里是有一个@Retention(RetentionPolicy.RUNTIME)
    1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
    2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
    3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
    这3个生命周期分别对应于:Java源文件(.java文件) ---> .class文件 ---> 内存中的字节码。
    所以@ConfigurationProperties支持热更新
    image
posted @ 2022-09-04 21:32  小源博客  阅读(744)  评论(0编辑  收藏  举报