Spring Cloud 项目基于 Nacos 实现服务注册发现

如果你的项目是基于 Spring Cloud 的项目,则可参考本文中的方式进行项目集成。

此处以 Maven 项目为了例子,简述集成的方式。

引入依赖

配置 Spring Cloud Alibaba 版本

<properties>
    <!-- For Spring Cloud Hoxton.SR12 -->
    <spring-cloud-alibaba.version>2.2.10</spring-cloud-alibaba.version>
    <!-- For Spring Cloud 2021.0.x -->
    <!-- <spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version> -->
    <!-- For Spring Cloud 2023.0.x -->
    <!-- <spring-cloud-alibaba.version>2023.0.1.2</spring-cloud-alibaba.version> -->
</properties>

导入 Spring Cloud Alibaba 依赖

<dependencyManagement>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring-cloud-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

在项目中引入 Nacos Config ClientNacos Discovery Client

<!-- For Spring Cloud Nacos Config Client -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- For Spring Cloud Nacos Discovery Client -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

配置服务

创建 bootstrap.yaml 文件,配置如下:

# 指定启用环境
spring:
  # 设置应用名称,根据应用实际情况替换
  application:
    name: demo-app
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      # 设置nacos地址
      server-addr: 127.0.0.1:8848
      username: nacos
      password: nacos
      # 配置中心设置
      config:
        file-extension: yaml
        # 指定命名空间,默认为public
        namespace: d4a77f87-ee73-4f71-a281-d8cf617d8051
        # 指定默认配置
        extension-configs:
          - dataId: common-config.yaml
            group: DEFAULT_GROUP
            refresh: true
          - dataId: dynamic-tp.yaml
            group: DEFAULT_GROUP
            refresh: true
      # 注册中心设置
      discovery:
        namespace: d4a77f87-ee73-4f71-a281-d8cf617d8051
        metadata:
          '[name]' : ${swagger.title}
          '[detail]' : ${swagger.description}
          '[version]' : ${swagger.version}

配置说明

  • 此服务的应用名称为 demo-app
  • 此服务指向的Nacos地址是 127.0.0.1:8848,账号密码是:nacos/nacos
  • 此服务使用了Nacos命名空间地址为 d4a77f87-ee73-4f71-a281-d8cf617d8051
  • 此服务配置了公共配置 common-config.yamldynamic-tp.yaml

特定环境配置

不同环境使用的Nacos服务端多不相同,可以通过不同的配置来区分环境,以 dev 环境为例,创建 bootstrap-dev.yaml 文件,配置如下:

# 指定启用环境
spring:
  # 设置应用名称,根据应用实际情况替换
  application:
    name: demo-app
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      # 设置nacos地址
      server-addr: http://192.168.3.27:8848
      username: nacos
      password: nacos
      # 配置中心设置
      config:
        file-extension: yaml
        # 指定命名空间,默认为public
        namespace: fa05d9d6-d47d-4d49-b797-b918ffba2e22
        #context-path: /nacos
        # 指定默认配置
        extension-configs:
          - dataId: common-config.yaml
            group: DEFAULT_GROUP
            refresh: true
          - dataId: dynamic-tp.yaml
            group: DEFAULT_GROUP
            refresh: true
      # 注册中心设置
      discovery:
        namespace: fa05d9d6-d47d-4d49-b797-b918ffba2e22
        register-enabled: false
        metadata:
          '[name]' : ${swagger.title}
          '[detail]' : ${swagger.description}
          '[version]' : ${swagger.version}
        service: ${spring.application.name}
作者:Jeebiz  创建时间:2024-10-02 19:44
最后编辑:Jeebiz  更新时间:2024-10-03 00:38