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日

相关文章

  • 详解SpringMVC中的日期处理和文件上传操作

    详解SpringMVC中的日期处理和文件上传操作 SpringMVC是一个非常流行的Java Web框架,它提供了很多方便的功能,包括日期处理和文件上传操作。在本文中,我们将详细讲解如何在SpringMVC中处理日期和上传文件。 日期处理 在Web应用程序中,日期处理是一个非常常见的需求。SpringMVC提供了很多方便的方式来处理日期,包括使用注解和自定义…

    Java 2023年5月18日
    00
  • springmvc+shiro+maven 实现登录认证与权限授权管理

    接下来我将为您详细讲解“springmvc+shiro+maven 实现登录认证与权限授权管理”的完整攻略。 1. 环境准备 首先需要搭建好SpringMVC和Maven的环境,可使用IDEA等开发工具自行创建空白项目。 2. pom.xml配置 为项目引入SpringMVC和Shiro的依赖包,具体如下: <!–SpringMVC依赖包–>…

    Java 2023年5月19日
    00
  • response.setContentType()的作用及MIME参数详解

    下面是“response.setContentType()的作用及MIME参数详解”的完整攻略。 1. response.setContentType()的作用 在Java Web开发中,我们经常需要向客户端发送响应报文,使用response.setContentType()可以告诉浏览器我们发送的数据类型、编码方式等信息。 其中,response是Web应…

    Java 2023年6月15日
    00
  • Springboot添加jvm监控实现数据可视化

    Spring Boot提供了一个Actuator模块,可以用来实现JVM监控并将监控数据可视化展示。下面是实现的完整攻略: 1. 添加JVM监控依赖 在项目的pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <arti…

    Java 2023年5月19日
    00
  • Spring MVC实现mysql数据库增删改查完整实例

    以下是关于“Spring MVC实现MySQL数据库增删改查完整实例”的完整攻略,其中包含两个示例。 Spring MVC实现MySQL数据库增删改查完整实例 在Spring MVC中,我们可以使用JdbcTemplate类来实现MySQL数据库的增删改查操作。在本文中,我们将讲解如何使用JdbcTemplate类来实现MySQL数据库的增删改查操作。 My…

    Java 2023年5月17日
    00
  • springMVC+jersey实现跨服务器文件上传

    下面为您详细讲解如何使用SpringMVC和Jersey实现跨服务器文件上传的完整攻略。 1. 环境准备 要使用SpringMVC和Jersey实现跨服务器文件上传需要先进行环境准备,包括以下两个方面: 1.1. 服务器环境 首先搭建需要搭建两个服务器,一个是文件上传的服务器,另一个是文件存储的服务器。其中文件上传服务器需要安装Tomcat和Jersey,文…

    Java 2023年6月15日
    00
  • jsp struts1 标签实例详解第2/2页

    下面我将详细讲解JSP Struts1标签实例详解的完整攻略。该攻略分为两页,这里我将着重对第二页进行讲解。 一、JSP Struts1标签实例详解(第2/2页) 本文主要对Struts标签库进行介绍,讲解它们的使用方法和常用属性。 1. html:submit(表单提交按钮) html:submit标签用于创建表单提交按钮。以下是html:submit标签…

    Java 2023年6月15日
    00
  • Java算法之时间复杂度和空间复杂度的概念和计算

    Java算法之时间复杂度和空间复杂度的概念和计算 什么是时间复杂度和空间复杂度 时间复杂度是指算法执行所需要的时间,它通常使用大O符号来表示。在一个算法中执行基本操作的次数取决于输入的大小,所以通常我们将时间复杂度表示为输入大小n的函数。 空间复杂度是指算法执行所需的内存空间。空间复杂度也是一个随着输入大小n变化的函数,通常也使用大O符号来表示。 两者都是用…

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