SpringBoot 整合 Nacos

搭建SpringBoot项目

SpringBoot 整合 Nacos

加入依赖


    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-config


    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-discovery

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 页面选择配置管理,创建配置文件

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

Data Id 的完整格式为: {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 来配置。目前只支持 properties 和 yaml 类型。

Group 也就是分组,本文里也就是按照环境进行划分。比如 dev、test、uat。

SpringBoot 整合 Nacos

笔者配置:

  • Data Id:naocs-service-dev.yaml
  • Group :dev
  • 新建命名空间
SpringBoot 整合 Nacos

提供测试的 Controller

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

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

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

SpringBoot 整合 Nacos

注册中心

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

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

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

加载多个配置文件

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

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.yaml、mybatis-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

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

你可能感兴趣的:(SpringBoot 整合 Nacos)