目标
向项目中集成Nacos配置。原项目是一个SpringBoot项目。这里假设我们无法修改原有项目的SpringBoot版本。
注意
在不动SpringBoot版本的前提下,根据SpringBoot的版本,确定Spring Cloud和Nacos版本。Nacos版本其实就是Spring Cloud Alibaba版本。在Nacos的文档里面有一个表格,确定应该使用的Nacos具体版本。
例如:我这里使用的是SpringBoot2.6.3,这应该使用Spring Cloud Alibaba2021.0.1.0版本。如果你使用的SpringBoot版本没有在Nacos官方文档里面出现,那就选一个与你使用的SpringBoot版本接近的Nacos版本吧。
步骤
pom.xml
<?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.6.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.com.xxx</groupId>
<artifactId>xxxx</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>xxx</name>
<description>xxxx project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>2021.0.1</spring-cloud.version>
<spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--配置中心 nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
bootstrap.yml
spring:
application:
name: myapp
#nacos组件
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: ${NACOS_URL:https://xxx.xxxx.com.cn}
namespace: ${NACOS_NAME_SPACE:123412437-2343-423d-sdads3-zw3r3}
username: ${NACOS_NAME:xxx}
password: ${NACOS_PASS:xxx}
group: ${SPRING_PROFILES_ACTIVE:dev}
config:
# 配置中心地址
server-addr: ${NACOS_URL:https://xxxx.xxxx.com.cn}
namespace: ${NACOS_NAME_SPACE:123412437-2343-423d-sdads3-zw3r3}
file-extension: yaml
username: ${NACOS_NAME:sss}
password: ${NACOS_PASS:xxxx}
group: ${SPRING_PROFILES_ACTIVE:dev}
server:
port: 8080
HelloController.java
@RefreshScope
@RestController
@RequestMapping("/hello")
public class HelloController {
@Value("${useLocalCache:false}")
private boolean useLocalCache;
@RequestMapping("/nacos/get")
public boolean get() {
return useLocalCache;
}
}
Nacos配置
myapp-dey.yml
useLocalCache:true
测试
现在结果为true,于预期结果一直,Spring读到了Nacos里面的配置数据。
接下来,将nacos里面的结果修改成false:
再用Postman调用一下,查看Spring读到的配置数据:
Spring读到了Nacos里面的配置。到此,Nacos集中配置就能够正常使用了。
总结
这里是先确定使用的SpringBoot版本,然后,进一步确定Spring Cloud和Spring Cloud Alibaba的版本。然后,就可以使用Nacos了,最好再考虑一下使用的Nacos服务端版本。
参考
- Nacos Spring Cloud 快速开始
- 版本说明