SpringCloudAlibaba 2021.0.1.0 版本整合Nacos配置中心

 nacos安装教程:服务注册中心和配置中心nacos安装 

一、组件版本关系

SpringCloudAlibaba、SpringCloud、SpringBoot对应版本

Spring Cloud Alibaba VersionSpring Cloud VersionSpring Boot Version

2021.0.1.0

Spring Cloud 2021.0.1

2.6.3

Nacos对应版本

Spring Cloud Alibaba VersionSentinel VersionNacos VersionRocketMQ VersionDubbo VersionSeata Version

2021.0.1.0

1.8.3

1.4.2

4.9.2

2.7.15

1.4.2

官方提醒:每个 Spring Cloud Alibaba 版本及其自身所适配的各组件对应版本(经过验证,自行搭配各组件版本不保证可用)

更多版本对应关系参考:版本说明 Wiki

二、集成Nacos配置中心

1、SpringCloudAlibaba依赖

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.6.3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2021.0.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2021.0.1.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
</dependencyManagement>

2、启动配置管理

启动了 Nacos server 后,需要添加依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。

3、两种配置方式bootstrap.yml、spring.config.import

3.1 配置 bootstrap.yml

SpringCloudAlibaba2021.0.1.0版本移除了对bootstrap.yml支持。看spring-cloud-starter-alibaba-nacos-config依赖关系中虽然引入了spring-cloud-starter-bootstrap,但是不会生效,必须重新引入bootstrap的依赖

<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

bootstrap.yml

spring:
  application:
    name: provider-server
  cloud:
    nacos:
      config:
        file-extension: yml
        group: PROVIDER_CONFIG_GROUP
        name: provider-server-dev.yml
        shared-configs: #配置共享文件
          - data-id: application-common.yml
            group: PROVIDER_CONFIG_GROUP
            refresh: true
          - data-id: application-custom.yml
            group: PROVIDER_CONFIG_GROUP
            refresh: false

 Nacos配置中心文件

在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

provider-server-dev.yml

 application-custom.yml

application-common.yml

这个配置是共享文件,这里配置redis缓存

spring:
  redis:
    # Redis默认情况下有16个分片,这里配置具体使用的分片。默认是索引为0的分片
    database: 1
    # Redis服务器地址
    host: 127.0.0.1
    # Redis服务器连接端口
    port: 6379
    # Redis服务器连接密码(默认为空)
    password: 123456
    # 连接超时时间(毫秒)
    timeout: 2000s

    # 配置文件中添加 lettuce.pool 相关配置,则会使用到lettuce连接池
    lettuce:
      pool:
        # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
        max-wait: 60s
        # 连接池中的最大空闲连接 默认 8
        max-idle: 10
        # 连接池中的最小空闲连接 默认 0
        min-idle: 10
        # 连接池最大连接数(使用负值表示没有限制) 默认 8
        max-activ: 8

3.2 spring.config.import方式

使用这个方法时,不需要bootstrap.yml。如果引用了 spring-cloud-starter-bootstrap需要去除

创建application.yml

server:
  port: 8090

spring:
  application:
    name: provider-server
  cloud:
    nacos:
      discovery:
        group: PROVIDER_GROUP
      config:
        group: PROVIDER_CONFIG_GROUP
        server-addr: 127.0.0.1:8848
  config:
    import:
      - optional:nacos:provider-server-dev.yml  # 监听 PROVIDER_GROUP :provider-config-dev.yml
      #      - optional:nacos:provider-server-dev.yml?group=group_01  # 覆盖默认 group,监听 group_01:provider-config-dev.yml
      #      - optional:nacos:provider-server-dev.yml?group=group_02&refreshEnabled=false # 不开启动态刷新
      - nacos:provider-server-dev.yml # 在拉取nacos配置异常时会快速失败,会导致 spring 容器启动失败

4、通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新

读取配置文件有两种方式:

1、直接通过@Value注解

2、通过实体类注入

UserConfig.java

其中prefix = "configdata"是application-custom.yml配置文件内容的前缀

@Data
@Configuration
@ConfigurationProperties(prefix = "configdata")
public class UserConfig {
    private String name;
    private Integer age;
    private String id;
}
@RefreshScope
@RestController
@RequestMapping("/provider")
public class ProviderController {

    @Autowired
    private UserConfig userConfig;

    @Autowired
    private StringRedisTemplate redisTemplate;
    
    @Value("${server.port}")
    private String port;

    @GetMapping("/getNacosConfig")
    public String providerTest() {
        return "我是provider,已成功获取nacos配置中心的数据:(name:" + userConfig.getName() +",age:"+userConfig.getAge()+",id:"+userConfig.getId()+")";
    }

    @GetMapping("/addRedis")
    public void addRedisValue(){
        redisTemplate.opsForValue().set("zhangsan","23");
    }
    
    @GetMapping("/getPort")
    public String getPort() {
        return "我是provider,已成功获取nacos配置中心的数据:(端口号:" +port +")";
    }
}

 5、演示

1、@Value注解

2、实体类

 修改配置并且发布

验证动态刷新完成 

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值