SpringCloud+Nacos

目录

 下载Nacos

​编辑将注册中心替换成Nacos

  在父项目中导入依赖

  替换依赖

修改配置文件

创建命名空间

 将项目中的配置放入Nacos中统一管理

接上文SpringBoot+SpringCloud,这篇文章将注册中心由consul换成了Nacos。

 下载Nacos

  下载地址: https://github.com/alibaba/nacos/releases

 注意:下载的是2.3.2版本,其它版本可能会出现错误

下载完之后,可以将文件解压在系统盘中。

 进入到conf目录下,打开application.properties文件。

 将application.properties中的以下内容进行替换。

nacos.core.auth.enabled=true

nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:example}

nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:example}

然后进入到bin目录下,使用cmd命令,输入windows命令

startup.cmd -m standalone

 出现以下界面,就说明Nacos启动成功了。

 输入网址:localhost:8848/nacos 用户名和密码都是nacos。

登录成功后,就可以进入主页了。

将注册中心替换成Nacos

  在父项目中导入依赖

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2021.0.5.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

  替换依赖

首先需要删除spring-cloud-starter-consul-discovery依赖,然后添加下面的两个依赖。

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

        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-loadbalancer -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
            <version>3.1.3</version>
        </dependency>

修改配置文件

将原本cloud下的consul换成nacos,namespace为命名空间,需要自己在nacos中创建。不同的namespace表示不同的环境,通常环境中包括数据库连接等一些配置信息。通过使用namespace命名空间,我们可以将不同环境的配置和服务隔离,避免相互打扰。

spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #nacos的服务器的地址和端口
        namespace: 21c3a300-eade-4505-b33a-98f06e1055fb #需要进行替换
        username: nacos
        password: nacos

创建命名空间

根据下面的操作,创建命名空间,然后复制自动生成的命名空间ID放在yml文件的namespace中。

 到这里,注册中心就从consul换成nacos了,启动项目,可以看到服务列表会有相应的项目了。

 将项目中的配置放入Nacos中统一管理

 我们需要将每一个子模块的yml文件中的内容放入Nacos中的配置中心统一管理。

 新建配置

进入创建配置的页面

点击发布后,可以看见配置列表中就有了我们刚刚发布的文件了。这样子Nacos中就有了我们子模块mall-product需要的application.yml文件,此时我们只需要每次去Nacos中读取即可,不需要在子模块中写一个application.yml文件了。但是要去读取Nacos中的配置文件,我们需要创建一个bootstrap.yml文件(文件名不可更改,是约定好的),通过这个文件帮助我们去读取Nacos中的配置文件。

导入依赖 

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

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

创建bootstrap.yml文件

在resource下创建bootstrap.yml文件

spring:
  application:
    name: mall-product # 服务名
  cloud:
    nacos:
      config:
        username: nacos
        password: nacos
        server-addr: localhost:8848 #nacos的服务器的地址和端口
        namespace: 21c3a300-eade-4505-b33a-98f06e1055fb
        file-extension: yaml
        group: test-mall  #分组的名字
  profiles:
    active: dev  #命名空间的名字

此时可以将application.yml文件删除,重新启动项目,可以看到项目mall-product依然被注入到服务列表中了,说明读取Nacos中的配置文件成功。

配置共享

首先我们需要考虑的是application.yml文件中哪些配置是重复的,我们可以将这些配置单独写一个application.yml文件,就不需要在子模块的application.yml文件中重复书写了。

nacos-register

将nacos的配置信息单独配置

spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #nacos的服务器的地址和端口
        namespace: 21c3a300-eade-4505-b33a-98f06e1055fb
        username: nacos
        password: nacos

mybatis-plus

将数据库连接和mybatis-plus的配置信息单独配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mall?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
    username: root
    password: 123456
    hikari:
      connection-timeout: 6000
      maximum-pool-size: 5
  #  jackson:
  #    date-format: yyyy-MM-dd HH:mm:ss
  #    time-zone: GMT+8
  #    serialization:
  #      write-dates-as-timestamps: false
mybatis-plus:
  configuration:
    #开启驼峰功能,数据库字段hello_world 实体类helloWorld 也能对应匹配
    map-underscore-to-camel-case: true
    #结果集自动映射(resultMap)
    auto-mapping-behavior: full
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath*:mapping/*Mapper.xml
  global-config:
    # 逻辑删除配置
    db-config:
      # 删除前
      logic-not-delete-value: 1
      # 删除后
      logic-delete-value: 0

 删除mall-product中重复配置

将mall-product中的mybatis-puls、数据库连接、nacos注册信息删除。

 在bootstrap添加配置信息

在config中添加shared-configs属性,填写配置文件对应的Data-Id和Group,重启项目即可。

spring:
  application:
    name: mall-product # 服务名
  cloud:
    nacos:
      config:
        username: nacos
        password: nacos
        server-addr: localhost:8848 #nacos的服务器的地址和端口
        namespace: 21c3a300-eade-4505-b33a-98f06e1055fb
        file-extension: yaml
        group: test-mall  #分组的名字
        shared-configs:
          - data-id: nacos-register.yaml #web模块的配置文件名称 即dataId
            group: test-mall
            refresh: true  # 是否动态刷新
          - data-id: mybatis-plus.yaml #web模块的配置文件名称 即dataId
            group: test-mall
            refresh: true  # 是否动态刷新
  profiles:
    active: dev  #命名空间的名字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值