美文网首页Spring Boot
SpringBoot与Nacos整合

SpringBoot与Nacos整合

作者: 程序员小杰 | 来源:发表于2020-12-03 20:51 被阅读0次

    上一篇笔者已经介绍怎么安装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

    这里主要配置三个东西,Data ID、Group 以及要配置的内容。
    Data Id 的格式是 ${prefix}-${spring.profile.active}.${file-extension}
    ${prefix} 的值,默认为 spring.application.name 的值
    ${spring.profile.active}表示项目当前所处的环境
    ${file-extension} 表示配置文件的扩展名

    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依赖注释放开
    在nacos节点下增加配置

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

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


    image.png

    注:如果配置中心与当前应用的配置文件都配置了相同的key,优先使用配置中心的配置。

    加载多个配置文件

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

    • 示例配置 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
    

    相关文章

      网友评论

        本文标题:SpringBoot与Nacos整合

        本文链接:https://www.haomeiwen.com/subject/cetvwktx.html