SpringBoot集成Nacos配置中心和服务注册

安装Nacos

https://blog.csdn.net/Soldoros_/article/details/118943062

引入nacos依赖包

<!-- Spring Boot 启动父依赖 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.2</version>
</parent>
<!-- Nacos服务注册/发现 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2021.1</version>
</dependency>
<!-- Nacos配置中心 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2021.1</version>
</dependency>
<!-- SpringBoot2.4版本开始,配置文件加载方式进行了重构,读取bootstrap.yml文件 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
    <version>3.1.3</version>
</dependency>

基本上分布式项目都遇到过springcloud,springboot,springcloudalibab的版本适配问题,因为如果选择的版本不适配的话将会出各种问题。
image

配置bootstrap.yml

spring:
  application:
    name: demo
  profiles:
    active: dev
  cloud:
    nacos:
      # nacos地址
      server-addr: 127.0.0.1:8848
      # Nacos服务注册
      discovery:
        namespace: public
      # Nacos配置中心
      config:
        # 是否开启,默认true,可省略
        enabled: true
        # 命名空间,如果没有指定命令空间,默认 public,可省略
        namespace: public
        # 分组名称,如果没有配置Group,则默认值为DEFAULT_GROUP,可省略
        group: DEFAULT_GROUP
        # 文件名前缀,默认为 spring.application.name 的值,可省略
        prefix: ${spring.application.name}
        # 开启监听和自动刷新,默认为 true,可省略
        refresh-enabled: true
        # 从Nacos读取配置项的超时时间,默认值 3000 毫秒,可省略
        timeout: 3000
        # 读取nacos配置文件后缀
        file-extension: yaml

image

image

动态刷新配置@RefreshScope

@RefreshScope是spring cloud提供的一种特殊的scope实现,用来实现配置、实例热加载。

当遇到生产环境配置参数需要调整,但又没有配置中心的支持的情况下,只能重启应用以加载新参数,可能会影响业务系统运行,太暴力不优雅;

@RefreshScope注解能帮助我们做局部的参数刷新,但侵入性较强,需要开发阶段提前预知可能的刷新点。

@Component
@RefreshScope
public class YstHttpProxySms {

    @Value("${accessKey}")
    private String accessKey;

    @Value("${secretKey}")
    private String secretKey;

    @Value("${refreshMin}")
    private int refreshMin;
}
posted @ 2022-09-26 09:59  zhαojh  阅读(823)  评论(0编辑  收藏  举报