我是一个大数据工程师,但是被迫营业做后端,现在接手了一个项目,干!有个东西叫Nacos。没接触过,那不行,会被优化的。我一大数据工程师搞gr的springcloud,网上很多说整合整合springboot的,我拿来一用,全是骗人屁,导入了一个springCloud然后说springBoot整合nacos,我服了,搞得我springboot导入依赖根本起不起来,满篇红叉叉报错,于是为了提升国内博客的数量,摈弃那种虚假文章,正国内博客之风,提高真实性,出了这篇文章。
然后我去官网看了,官网写的也不全,尤其是那个快速入门springboot-nacos你跟着那个来,肯定起不来,最后去看了他的官方git代码示例,才发现不一样。然后还有版本问题,springBoot对应nacos哪个版本他也没有写,总之就是这些问题,还有那个nacos博客里面全是各种广告,和技术相关的几乎没有,然后我网上搜索了半天,再加上实践,最终写出了这篇比官方还要全的springBoot-nacos文章。
nacos是一个注册中心。什么是注册中心,就是把其他的服务全部交给一个服务去管理,这个管理其他服务的中心就叫注册中心,他有啥功能呢?就是原来的配置在application里面的,全部从网上(nacos)配置,然后动态更新
服务端后端的同学搭建好了,现在咱们只用在代码里连客户端就行,
创建一个springBoot-web的项目,然后导入依赖,nacos官方示例所需要的依赖以及对应的版本,请看我标红的部分。
上代码,nacos先导入依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.6</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>codeTest1</artifactId> <version>0.0.1-SNAPSHOT</version> <name>codeTest1</name> <description>codeTest1</description> <properties> <java.version>1.8</java.version> <nacos-config-spring-boot.version>0.2.1</nacos-config-spring-boot.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-starter</artifactId> <version>${nacos-config-spring-boot.version}</version> </dependency> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-actuator</artifactId> <version>${nacos-config-spring-boot.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
然后咱们默认的springBoot的配置叫做application.properties中配置nacos地址
不要加http,直接写ip和端口号就行
nacos.config.server-addr=192.168.9.31:8848
在springApplication启动类中,加入注解,选择要指向的Data Id,开启自动更新
@SpringBootApplication @NacosPropertySource(dataId = "zhibo-test", autoRefreshed = true) public class CodeTestApplication { public static void main(String[] args) { SpringApplication.run(CodeTestApplication.class, args); } }
主要加入了这个@NacosPropertySource(dataId = "zhibo-test", autoRefreshed = true)
这个是Data Id的位置(我先不创建,我后面创建)
代码,写一个controller测试
package com.example.codetest1.controller;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
@Controller
@RequestMapping
public class TestNacos {
@NacosValue(value = "${test:0}", autoRefreshed = true)
private String data;
@RequestMapping(value = "/get", method = GET)
@ResponseBody
public String get() {
return data;
}
}
@NacosValue(value = "${test:0}", autoRefreshed = true)
表示从nacos中获取test的值,0代表他的默认值,当我没有在nacos创建zhibo-test的时候,通过请求返回是0
我在nacos【服务端】新建的Data Id是test_zhibo的里面,改一下,加1个,test=123
然后再次请求,如果修改为123了,说明nacos动态更新了springBoot的程序。
我在整个过程中都没有重启springBoot服务
成功!
参考:
---建议大家多看【官网代码示例】
Springboot启动时报错:Root bean: class [null]_root bean: class [null]; scope=; abstract=false; l-CSDN博客
https://github.com/nacos-group/nacos-spring-boot-project/wiki/spring-boot-0.2.2-%E4%BB%A5%E5%8F%8A-0.1.2%E7%89%88%E6%9C%AC%E6%96%B0%E5%8A%9F%E8%83%BD%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C
https://mvnrepository.com/artifact/com.alibaba.boot/nacos-config-spring-boot-starter/0.2.7
Nacos Spring Boot 快速开始
Nacos简介_shenlbang的博客-CSDN博客