前言

“我正在参加「启航计划」”

作者简介: 不肯过江东丶,一个来自二线城市的程序员,致力于用“鄙陋”方法解决繁琐问题,让杂乱的问题变得通俗易懂。

支撑作者: 点赞、关注、留言~

前面咱们讲了如安在 Windows 环境下装置布置 Nacos,相信各位小伙伴都现已搭建好了自己的 Nacos。接下来,咱们就一起来看看如安在 SpringBoot 项目中整合 Nacos 完成注册中心和装备中心。

温馨提示:还没有装置 Nacos 的小伙伴可移步至大聪明教你学Java | Windows 环境下装置布置 Nacos

SpringBoot 整合 Nacos

引进 Maven 依靠

首要,咱们还是要引进 Maven 依靠

<!--注册中心的依靠-->
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-discovery-spring-boot-starter</artifactId>
    <version>0.2.3</version>
</dependency>
<!-- 装备中心的依靠 -->
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-config-spring-boot-starter</artifactId>
    <version>0.2.3</version>
</dependency>

⭕这儿有一点是需求注意的:注册中心和装备中心的依靠版别要根据 SpringBoot 版原本挑选。版别 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版别,版别 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版别。 在这儿我使用的 SpringBoot 版别是 2.2.4.RELEASE ,所以挑选了 0.2.3 版别的注册中心和装备中心。

添加装备

接下来就是在 application.yml 中添加相关的装备

server:
  port: 80
  servlet:
    context-path: /
spring:
  application:
    name: NacosDemo
nacos:
  config:
    server-addr: 127.0.0.1:8848
  discovery:
    server-addr: 127.0.0.1:8848

示例代码

首要咱们需求在项目发动类上添加两个 Nacos 的注解

import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import com.alibaba.nacos.spring.context.annotation.discovery.EnableNacosDiscovery;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableNacosDiscovery //注册中心注解 使用nacos
@NacosPropertySource(dataId = "product_config",autoRefreshed = true) //装备中心注解:autoRefreshed 代表自动改写注解
public class NacosdemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(NacosdemoApplication.class, args);
    }
}

接下来咱们需求再添加一个 Nacos 的装备文件

import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
/**
 * @program: NacosDemo
 * @description: NacosConfig
 * @author: 庄霸.liziye
 * @create: 2022-04-29 16:39
 **/
@Configuration
public class NacosConfig {
    @Value("${server.port}")
    private int serverPort;
    @Value("${spring.application.name}")
    private String applicationName;
    @NacosInjected
    private NamingService namingService;
    @PostConstruct
    public void registerInstance() throws NacosException {
        namingService.registerInstance(applicationName, "127.0.0.1", serverPort);
    }
}

最终咱们写一个模仿获取装备参数的 Controller 类

import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * ConfigController 装备控制器
 * @description: ConfigController
 * @author: 庄霸.liziye
 * @create: 2022-04-29 15:29
 **/
@RestController
@RequestMapping("/test")
public class ConfigController {
    @NacosValue(value = "${productName}",autoRefreshed = true)
    private  String productName;
    @RequestMapping("/productName")
    public String getProductName(){
        return productName;
    }
}

到这儿代码现已预备结束了,既然咱们有一个获取装备参数的 Controller,那么咱们必定也少不了要定义一个待获取的装备参数。咱们发动 Nacos ,登录它的后台页面,在左边的装备办理中找到装备列表,在装备列表下创建一个新的装备。

大聪明教你学Java | SpringBoot 整合 Nacos 实现注册中心和配置中心
大聪明教你学Java | SpringBoot 整合 Nacos 实现注册中心和配置中心

❗❗❗这儿一定要注意❗❗❗:在 Nacos 办理页面新增参数时,所填写的 Data ID 值有必要要和发动类上 @NacosPropertySource 注解中的 dataId 值是一致的;并且在定义装备内容的时分,装备的姓名有必要要和 Controller 中定义的姓名保持一致。二者中无论哪一个姓名不匹配,在发动项目时都会报找不到装备的过错。

到这儿,代码和装备都现已预备结束了,咱们发动一下项目看看具体效果… 项目发动后,咱们在 Nacos 办理页面左边找到服务办理下的服务列表,翻开服务列表就可以看到咱们的项目成功的注册进了 Nacos。

大聪明教你学Java | SpringBoot 整合 Nacos 实现注册中心和配置中心
接下来,咱们在浏览器访问 http://localhost/test/productName,可以看到咱们新增的装备被成功的取了出来。假如此时装备需求改变,咱们只需求在 Nacos 的后台修正对应的装备,然后改写一下页面就可以看到装备现已动态更新了

大聪明教你学Java | SpringBoot 整合 Nacos 实现注册中心和配置中心
大聪明教你学Java | SpringBoot 整合 Nacos 实现注册中心和配置中心

到这儿 SpringBoot 整合 Nacos 完成注册中心和装备中心就悉数完成了,是不是比 Eureka+Config 的方式方便了许多 (●’◡’●) ~

小结

自己经验有限,有些当地可能讲的没有特别到位,假如您在阅读的时分想到了什么问题,欢迎在评论区留言,咱们后续再一一讨论‍

期望各位小伙伴动动自己心爱的小手,来一波点赞+关注 (✿◡‿◡) 让更多小伙伴看到这篇文章~ 蟹蟹呦(●’◡’●)

假如文章中有过错,欢迎我们留言指正;若您有更好、更独到的理解,欢迎您在留言区留下您的宝贵主意。

爱你所爱 行你所行 听从你心 无问东西