SpringBoot 整合 Nacos

Posted king哥Java架构

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 整合 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

  • 新建命名空间

如果你觉得自己学习效率低,缺乏正确的指导,可以加入资源丰富,学习氛围浓厚的技术圈一起学习交流吧!
[Java架构群]
群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的JAVA交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

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。

最后

以下是Java面试1—到5年以上开发必问到的面试问点,也都是一线互联网公司Java面试必备技能,下面是参照阿里年薪50W所需具备的技能图,大家可以参考下!
在这里插入图片描述

同时针对这12个技能,我在这整理了一份Java架构进阶面试专题PDF文档(含450题解析,包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发,设计模式,MySQL等知识点解析,内容丰富,图文结合!)

蚂蚁金服Java研发岗三面:MySQL+秒杀+Redis+JVM等(终获offer)
这份专题文档是免费分享的,有需要的朋友可以看向下面来获取!!

需要完整版文档的小伙伴,可以一键三连,下方获取免费领取方式!
在这里插入图片描述

以上是关于SpringBoot 整合 Nacos的主要内容,如果未能解决你的问题,请参考以下文章

Nacos学习笔记 Nacos整合SpringBoot流程

3.Nacos服务整合SpringBoot框架技术

SpringBoot整合Nacos注册中心

SpringBoot整合Nacos注册中心

SpringBoot 整合 Nacos

SpringBoot整合Nacos集群报错,以及解决方案