nacos集成springboot
1.资源准备
1.1 版本选择
使用nacos作为注册中心,一般都是spring cloud项目。因此我们需要确定项目所需依赖的版本。
spring boot 、spring cloud、 、spring cloud alibaba版本之间的选择官网建议: 版本说明 Wiki
根据官网建议: 本次demo版本选择为 spring boot 3.0.2、spring cloud 2022.0.0、spring cloud alibaba 2022.0.0.0-RC2、nacos 2.2.1 (因为spring cloud alibaba最新版本只能到2022.0.0.0-RC2,这套组合是现在能选择的最新的依赖版本)
因为项目使用的是spring boot 3.x版本,因此要求jdk版本至少为17
maven版本建议3.2.x及以上
1.2资源下载
1.jdk下载地址
官方: Oracle官网下载地址
国内镜像下载地址:JDK下载 - 编程宝库 (codebaoku.com)
2.maven下载地址:
官网:Maven – Download Apache Maven
国内下载地址:Index of /dist/maven (apache.org)
3.nacos下载
官网:GitHub nacos(可以选择别人编译好的,也可以下载源码自己编译)
注: 下图只是演示,demo选择的nacos版本是2.2.1
如果选择源码编译,可以选择国内gitee地址,下载源码比较快
// 如果使用git下载 这复制下面命令
git clone https://gitee.com/mirrors/Nacos.git
cd nacos/
//需要提前配置好maven的环境变量
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
推荐直接下载编译过的文件。
2.环境配置
2.1 java环境配置
注: 本次demo的nacos是安装在linux上,安装的jdk只是为了满足nacos的运行,并非项目中使用的jdk版本。 nacos 2.2.1 使用jdk8即可启动。
window版本参考:JDK 安装与环境变量配置(Win10详细版)_jdk环境变量配置-CSDN博客
linux安装jdk(本地demo nacos运行在 linux centos系统中)
-
把下载的linux版本jdk上传至linux系统中
使用ftp工具上传到linux中
-
解压jdk,确定安装目录
进入上传jdk的文件 cd /xx/xx/xx 解压jdk tar -xvf jdk-x-x.tar 解压完成 进入解压文件 cd jdk-x-x 确定jdk安装路径 [root@localhost jdk1.8.0_241]# pwd /wz/devTool/java/jdk1.8.0_241
-
修改/etc/profile文件,添加 JAVA_HOME
打开环境变量配置文件 vim /etc/profile 在最下面添加 export JAVA_HOME="pwd显示的jdk安装路径" export PATH=$PATH:$JAVA_HOME/bin 保存退出 重新读取环境变量 source /etc/profile
-
验证 java -version
[root@localhost jdk1.8.0_241]# java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
输入java -version能够正确输出版本就安装完成
2.2 maven环境配置
参考地址: Maven配置教程-CSDN博客
2.3 nacos安装配置
1.使用ftp工具上传 下载的 nacos服务至 linux系统中.
上传完成后 解压
unzip nacos-server-xx.zip -d nacos-2.2.1
2.进入解压完成的nacos服务中 修改conf目录下配置文件
cd nacos上传目录/nacos-2.2.1/nacos/conf
查看conf下文件 进入 application.properties 配置文件
[root@localhost conf]# ls
1.4.0-ipv6_support-update.sql application.properties.example derby-schema.sql nacos-logback.xml
application.properties cluster.conf.example mysql-schema.sql
vim application.properties
如果端口冲突需要修改端口
server.port=8848
这个是必须要加的 不加无法启动
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
修改完成 保存 退出
进入 bin目录 启动服务
cd ../bin
nohup sh startup.sh -m standalone &
nacos.core.auth.plugin.nacos.token.secret.key的生成是复制官网demo Nacos 快速开始 可以使用官网插件生成自己的key
3.验证
在浏览器 输入ip:端口/nacos 进入nacos web页面
默认账号密码为 nacos nacos
如果访问不到则查看防火墙 状态, 关闭防火墙
3.创建工程验证注册中心
3.1 创建工程
1.使用idea 创建一个 空maven工程
2.添加依赖
本地demo 依赖 jdk 17、spring boot 3.0.2 spring cloud 2022.0.0
spring cloud alibab 2022.0.0-RC2
参考pom文件(只添加了必要依赖)
<?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>3.0.2</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>config</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>config</name>
<description>config</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2022.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2022.0.0.0-RC2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2022.0.0.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2022.0.0.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
3.2 添加配置文件
在 resources 文件夹下 创建 application.yml文件
参考配置
注: 该配置只是想验证 服务是否注册成功,测试接口是否正常并非最终版本
server:
port: 8080
spring:
application:
name: test
cloud:
nacos:
config:
import-check:
enabled: false
server-addr: 192.168.11.56:8848
namespace: public
enabled: true
file-extension: yaml
group: DEFAULT_GROUP
discovery:
server-addr: ${spring.cloud.nacos.config.server-addr}
enabled: true
namespace: ${spring.cloud.nacos.config.namespace}
group: ${spring.cloud.nacos.config.group}
test:
value: 我是本地版本
3.3 启动类
package com.wz.config;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class, args);
}
}
3.4 测试接口
package com.wz.config.controller;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RefreshScope
@RestController
@RequestMapping("test")
public class TestController {
@Value("${test.value}")
private String value;
@GetMapping("get")
public String returnValue() {
return value;
}
}
3.5启动服务
1.查看控制台
2.测试接口
3.查看nacos注册中心
demo 工程集成nacos discover成功
4.验证nacos 配置中心
4.1 创建配置
data id 也有默认的命名规则,如果不自动data id则是按照
s p r i n g . a p p l i c a t i o n . n a m e − {spring.application.name}- spring.application.name−{spring.profiles.active}.${spring.cloud.nacos.config.file-extension} 这个规则
具体参考: Nacos Spring Cloud 快速开始
4.2修改配置文件
添加配置参考yml
server:
port: 8080
spring:
application:
name: test
cloud:
nacos:
config:
server-addr: 192.168.11.56:8848
namespace: public
enabled: true
file-extension: yaml
group: DEFAULT_GROUP
discovery:
server-addr: ${spring.cloud.nacos.config.server-addr}
enabled: true
namespace: ${spring.cloud.nacos.config.namespace}
group: ${spring.cloud.nacos.config.group}
config:
import:
- optional:nacos:test-test1
test:
value: 我是本地版本
4.3 启动服务,验证
服务启动重新请求接口
nacos注册中心成功
5.多配置文件
5.1 加载多配置
在nacos上新增配置文件
yml修改 删除discover配置 新增一条spring cloud import配置
参考
server:
port: 8080
spring:
application:
name: test
cloud:
nacos:
config:
server-addr: 192.168.11.56:8848
namespace: public
enabled: true
file-extension: yaml
group: DEFAULT_GROUP
config:
import:
- optional:nacos:test-test1
- optional:nacos:test-dev
test:
value: 我是本地版本
5.2启动验证
启动成功
注册成功
则证明读取到了test-dev配置文件上的内容
验证接口接口
因为两份配置文件都配置了test.value 发现接口读取到的是 test-dev的值
5.3 调换配置文件顺序
参考yaml
server:
port: 8080
spring:
application:
name: test
cloud:
nacos:
config:
server-addr: 192.168.11.56:8848
namespace: public
enabled: true
file-extension: yaml
group: DEFAULT_GROUP
config:
import:
- optional:nacos:test-dev
- optional:nacos:test-test1
test:
value: 我是本地版本
重启服务查看接口
结论: 多个配置文件有相同配置项 会覆盖之前配置