SpringBoot 整合 Nacos

在项目开发过程中,我们经常使用 Nacos 作为配置中心和注册中心。本文章我们就从代码层面研究下 Spring Boot 是如何整合 Nacos 使用的。

Nacos 安装启动

一键傻瓜试安装即可,官网 写的很清楚这里不在赘述。这里以Window环境安装为例。

下载下来,启动 Nacos 将模式改为单机模式。

 双击 startup.cmd 等待启动成功

 Nacos 相关配置

创建配置 yaml

server:
  port: 9010


userName: Admin  

 

整合 Nacos 代码

 引入pom.xml依赖

需要根据用的 Spring Boot 配对应的 Nacos 版本

方式一:

复制代码
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

     <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.1.2.RELEASE</version>
        </dependency>
复制代码

方式二:

说明:在使用不同 Spring Boot 版本的项目中需要服务注册到外部系统的 Nacos 时,有可能出现 Nacos 版本不兼容, 可尝试方式二对config、discovery中 Nacos 进行exclusions再重新引用。

复制代码
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

    <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.1.3.RELEASE</version> <exclusions> <exclusion> <groupId>com.alibaba.cloud</groupId> <artifactId>nacos-client</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.3.RELEASE</version> <exclusions> <exclusion> <groupId>com.alibaba.cloud</groupId> <artifactId>nacos-client</artifactId> </exclusion> </exclusions> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client --> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>2.0.0</version> </dependency>
复制代码
配置 bootstrap.yml
复制代码
# bootstrap配置文件优先于application配置加载
# 在bootstrap配置文件里设置配置中心,启动时从配置中心拉取对应的application配置文件完成服务启动
# 同时在bootstrap配置文件里设置服务注册中心,实现启动时的服务注册

# spring配置
spring:
main:
# 由于swagger配置类使用了继承,spring必须配置allow-bean-definition-overriding为true
allow-bean-definition-overriding: true
application:
# 服务名
name: your-application-name
cloud:
nacos:
# 配置中心
config:
# 关闭服务配置
enabled: true
# 设置配置文件所属命令空间
namespace: ${NACOS_WORKSPACE:1fa654fd-4927-4dd2-ad62-aa34dcb8b76d}
# 设置配置文件名称 dataId = ${prefix}-${spring.profile.active}.${file-extension}
# 当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId = ${prefix}.${file-extension}
prefix: your-application-name
file-extension: yaml
# 设置配置文件所属组
# group: sa
# 配置中心地址
server-addr: ${NACOS_ADDR:127.0.0.1:8848}
username: ${NACOS_NAME:nacos}
password: ${NACOS_PSW:nacos}
group: ${NACOS_GROUP:DEFAULT_GROUP}
import-check: false
# 服务注册
discovery:
# 关闭服务注册
enabled: true
register-enabled: true
# 服务注册命令空间
namespace: ${NACOS_WORKSPACE:1fa654fd-4927-4dd2-ad62-aa34dcb8b76d}
# # 设置配置文件所属组
# group: sa
# 服务注册地址
server-addr: ${NACOS_ADDR:127.0.0.1:8848}
username: ${NACOS_NAME:nacos}
password: ${NACOS_PSW:nacos}
group: ${NACOS_GROUP:DEFAULT_GROUP}
复制代码
配置 application.yml
server:
  port: 9910

 开启注册发现 DemoApplication

复制代码
@EnableDiscoveryClient //开启服务发现客户端 也就是nacos Server的客户端
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}
复制代码

TestController 

复制代码
@RestController
public class TestController {

    @Value("${userName}")
    private String userName;

    @GetMapping("/hello")
    public String hello() {
        return "Hello " + userName;
    }

}
复制代码

测试结果

 

至此,服务注册和服务发现已经完成了。注意,只能发现在同一个命名空间下和同一个组别下面才可以发现。

 

posted @   不经意的瞬间  阅读(1968)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示