SpringBoot 整合 Nacos

这是我参与更文挑战的第 18 天,活动详情查看: 更文挑战

日积月累,水滴石穿 ?

上一篇笔者已经介绍怎么安装 Nacos 了,文章地址:安装Nacos这篇就开始重头戏。

搭建SpringBoot项目

image.png

加入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
复制代码

nacos-config这个依赖就相当于SpringCloud Config,nacos-discovery这个依赖就相当于Eureka

配置中心

先将nacos-discovery依赖进行注释,先来实现config
在项目中创建bootstrap.yml文件,加入以下配置:

spring:
  application:
  #服务名称
    name: naocs-service
  profiles:
    active: dev
  cloud:
    nacos:
      config:
      # 配置文件的环境
        group: ${spring.profiles.active}
      # 配置文件的格式
        file-extension: yaml
       # 配置中心的地址
        server-addr: 47.105.198.54:8848
      # 配置文件prefix
        prefix: ${spring.application.name}
     #命名空间
        namespace: mall
复制代码

然后登录 nacos,在 nacos 页面选择配置管理,创建配置文件
image.png

这里主要配置三个东西,DataID、Group 以及要配置的内容。

Data Id 的完整格式为: ${prefix}-${spring.profile.active}.${file-extension}

  • ${prefix} 的值默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • ${spring.profile.active} : 即为当前环境对应的 profile, 注意:当 spring.profiles.active 为空时,对应的连接符 – 也将不存在,DataID 的拼接格式变成 ${prefix}.${file-extension}
  • ${file-extension} 表示配置文件的扩展名,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 propertiesyaml 类型。

Group 也就是分组,本文里也就是按照环境进行划分。比如 dev、test、uat。
image.png
笔者配置:

  • Data Id:naocs-service-dev.yaml

  • Group :dev

  • 新建命名空间

image.png

提供测试的 Controller

@RestController
@RefreshScope   // 动态刷新
public class HelloController {

    @Value("${name}")
    private String name;
    @GetMapping
    public String hell(){
        return name;
    }
}
复制代码

然后调用接口:http://localhost:8080/hello

image.png

注册中心

将nacos-discovery依赖注释放开
然后在bootstrap.yml文件的nacos节点下增加如下配置:

      discovery:
        server-addr: 47.105.198.54:8848
        group: ${spring.profiles.active}
        namespace: mall
复制代码

启动项目,登录nacos。可以看到 服务管理 -》服务列表中有注册上来的服务的相关信息。
image.png

加载多个配置文件

在实际开发中,我们不可能将所有的配置同时放在同一个配置文件中,那样会显得多而有杂。

product-dev.yaml

新建product-dev.yaml文件,当然也可以使用上面那个文件。

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    #MySQL配置
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://47.105.198.54:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: xxxx
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss #如果使用字符串表示,用这行设置格式
    timezone: GMT+8
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
复制代码

接下来笔者会将product-dev.yaml里的配置拆分出来成为datasource-dev.yamlmybatis-plus-dev.yaml

datasource-dev.yaml

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    # MySQL配置
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://47.105.198.54:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: xxxx
复制代码

mybatis-plus-dev.yaml

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
复制代码

然后在应用程序的bootstrap.yml里的config节点下增加配置:

spring:
  profiles:
    active: ${DEPLOY_ENV}
  application:
    name: product
  cloud:
    nacos:
      config:
        group: ${spring.profiles.active}
        file-extension: yaml
        server-addr: ${NACOS}
        prefix: ${spring.application.name}
        namespace: ${nacos.client.namespace}
        extension-configs:
          - dataId: datasource-${spring.profiles.active}.yaml
            group: ${spring.profiles.active}
            #是否自动刷新
            refresh: true
          - dataId: mybatis-plus-${spring.profiles.active}.yaml
            group: ${spring.profiles.active}
            refresh: true
复制代码

注意: ${DEPLOY_ENV}${NACOS}这个两个配置是启动配置,分别对应着 加载环境,例如 dev, Nacos 地址,例如 47.105.198.54:8848。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享