SpringBoot集成Nacos的详细教程

以下是SpringBoot集成Nacos的详细教程:

准备工作

  1. 下载Nacos

可以在Nacos官网中下载最新版本的Nacos服务端。

  1. 安装Nacos

解压下载的压缩包,在bin目录下运行以下命令启动Nacos服务:

bash
sh startup.sh -m standalone

运行成功后,可以通过浏览器访问 http://localhost:8848/nacos/ 来查看Nacos控制台。

  1. 创建SpringBoot工程

在IDEA或Eclipse中创建一个新的SpringBoot项目。

这里不再赘述如何创建SpringBoot项目的详细步骤,可以参考官方文档或自行搜索。

  1. 添加依赖

在pom.xml文件中添加Nacos、SpringCloud和其他相关依赖:

xml
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

注册服务到Nacos

在SpringBoot项目中添加以下代码,将服务注册到Nacos:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class DemoApplication {

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

    @Value("${server.port}")
    private int port;

    @Value("${spring.application.name}")
    private String serviceName;

    @PostConstruct
    public void registerToNacos() throws NacosException {
        NamingService namingService = NamingFactory.createNamingService("localhost:8848");
        namingService.registerInstance(serviceName, "localhost", port);
    }
}

其中,@EnableDiscoveryClient注解告诉Spring Boot应用程序将启用服务注册和发现,@PostConstruct注解指示方法在应用程序启动时执行。

这里通过Nacos提供的NamingService将服务注册到Nacos中,并指定了服务的名称、IP地址和端口号。

从Nacos中获取配置

在SpringBoot项目中添加以下代码,从Nacos获取配置:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope
public class ConfigController {

    @Value("${config.name}")
    private String configName;

    @Value("${config.value}")
    private String configValue;

    @GetMapping("/config")
    public String getConfig() {
        return configName + ": " + configValue;
    }
}

其中,@RefreshScope注解用于在配置发生变化时重新加载Bean。

在Nacos控制台中,添加配置文件:

{
  "config": {
    "name": "demo",
    "value": "Spring Cloud Nacos Config"
  }
}

通过URL访问http://localhost:8080/config,即可获取到配置的名字和值。

示例1:Nacos服务发现

在另一个Spring Boot项目中,向Nacos注册一个服务:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class DemoApplication {

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

    @Value("${spring.application.name}")
    private String serviceName;

    @GetMapping("/service-name")
    public String getServiceName() {
        return serviceName;
    }
}

在另一个Spring Boot项目中,通过Nacos的服务发现功能,获取到注册在Nacos中的服务列表,并选择一个服务进行远程调用:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.client.RestTemplate;

import java.util.List;

@Controller
public class HelloController {

    private final RestTemplate restTemplate;
    private final DiscoveryClient discoveryClient;

    @Autowired
    public HelloController(RestTemplate restTemplate, DiscoveryClient discoveryClient) {
        this.restTemplate = restTemplate;
        this.discoveryClient = discoveryClient;
    }

    @GetMapping("/hello")
    public ResponseEntity<String> hello() {
        List<ServiceInstance> instances = discoveryClient.getInstances("demo-service");
        if (instances.size() == 0) {
            return ResponseEntity.notFound().build();
        }
        String url = instances.get(0).getUri() + "/service-name";
        return restTemplate.getForEntity(url, String.class);
    }
}

在上述代码中,通过DiscoveryClient获取服务的列表,选择第一个服务实例并从中获取其URI,在远程调用时通过这个URI调用服务的/service-name接口。

示例2:Nacos配置管理

在Spring Boot项目中,添加以下代码,读取Nacos中的配置:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
@RefreshScope
public class DemoApplication {

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

    @Value("${config.name}")
    private String configName;

    @GetMapping("/config")
    public String getConfig() {
        return configName;
    }
}

在Nacos控制台中,修改配置文件内容:

{
  "config": {
    "name": "Spring Nacos Config"
  }
}

选择配置发布、更新即可看到应用程序中的新配置。

总结:

通过本文的介绍,可以看出,集成Nacos几乎于Spring Boot无缝衔接,只需简单的配置和几行代码即可实现服务注册、发现和配置管理功能。如果您已经使用了Spring Cloud相关的技术栈,那么使用Nacos将会轻松不少。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot集成Nacos的详细教程 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • JSP实现的简单分页显示效果代码

    下面就是关于如何实现JSP简单分页显示效果的完整攻略。 一、分页原理介绍 分页是指将大量数据拆分成若干个小的单元,分别显示在不同的页面上。通过这种方式来展示大量数据可以更加清晰和直观。实现分页需要考虑到以下因素: 每页显示的数据数量 总共要显示的数据量 当前页数据的起始位置 当前页数和总页数 二、实现分页的方法 在JSP中,常用的实现分页的方法有两种:使用J…

    Java 2023年6月15日
    00
  • 什么是Java编程风格?

    Java编程风格是一种规范,用来规定编写Java代码的格式、命名、注释等等各个方面。遵循Java编程风格可以提高代码的可读性和可维护性,从而保证代码的质量和可靠性。 下面是Java编程风格的使用攻略: 1. 格式要求 1.1缩进 缩进是指代码在块级别内的缩进符号。Java编程风格一般使用四个空格作为缩进,而不是使用制表符或两个空格。例如: if (condi…

    Java 2023年5月11日
    00
  • 基于SpringBoot2.0版本与老版本的区别

    Spring Boot是一个流行的Java框架,可以帮助开发人员更加高效地构建和部署应用程序。在Spring Boot的发展过程中,不同版本之间存在一些区别。在本文中,我们将详细讲解基于Spring Boot 2.0版本与老版本的区别,并提供两个示例来演示这些区别。 基于Spring Boot 2.0版本与老版本的区别 以下是基于Spring Boot 2.…

    Java 2023年5月15日
    00
  • Java 实战练手项目之校园超市管理系统的实现流程

    校园超市管理系统是一个相对综合的Java实战练手项目,涉及到多个模块和技术。下面将详细阐述实现该系统的完整攻略。 1. 需求分析 在实现任何一个应用程序之前,我们需要首先进行需求分析,确定该系统需要满足哪些需求。在校园超市管理系统中,常见的需求包括: 商品管理:实现商品的添加、编辑、删除、查询等功能; 库存管理:对库存进行统计、报表展示等操作; 订单管理:实…

    Java 2023年5月31日
    00
  • Java 客户端操作 FastDFS 实现文件上传下载替换删除功能

    Java 客户端操作 FastDFS 实现文件上传下载替换删除功能攻略 什么是 FastDFS? FastDFS 是一个高性能的分布式文件系统,常用于分布式文件存储和视频处理等场景中。FastDFS 将文件日志放在单独的日志服务器上,解决服务器扩展问题。FastDFS 提供了文件上传、删除、替换和路径查询等基本的文件操作接口,同时它还具备了存储单元尺寸的动态…

    Java 2023年5月19日
    00
  • Java中Cookie和Session的那些事儿

    Java中Cookie和Session的那些事儿 在Web开发中,Cookie和Session是两个非常重要的概念。Cookie是一种机制,用于在客户端保留用户信息,而Session则是一种服务器端的机制,用于跟踪用户的状态。 Cookie 什么是Cookie Cookie是一种存储在用户计算机上的数据,用于在客户端保持状态信息。当用户访问页面时,Cooki…

    Java 2023年5月20日
    00
  • Java数据库连接池之DBCP浅析_动力节点Java学院整理

    Java数据库连接池之DBCP浅析 什么是数据库连接池 数据库连接池是数据库连接对象的一个容器。在程序初始化时,容器被创建,并装入足够的连接对象,在程序运行过程中,系统将连接对象放入容器中,并从容器中取出连接对象,使用完毕后再将连接对象放回容器中。 其中,连接对象是指一个数据库连接。对于Java来说,主流的数据库连接方式有两种,一种是JDBC(Java数据库…

    Java 2023年6月1日
    00
  • 在SpringBoot项目中整合拦截器的详细步骤

    在SpringBoot项目中整合拦截器的步骤如下: 1.编写拦截器类和配置类 首先,我们需要编写一个自定义的拦截器类,实现HandlerInterceptor接口并重写其三个方法。接着,需要编写一个配置类,将拦截器注册到Spring容器中,并指定对哪些URL进行拦截。 示例: public class MyInterceptor implements Han…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部