说明:nacos 不一定只能用于微服务架构,单体架构也能使用 Nacos 作为项目云端配置中心,利用 nacos 配置热更新的功能,存储一些需要实时更新的配置。
本文介绍单体项目如何整合 nacos,使用 nacos 的配置中心。
整合
(1)pom.xml
创建一个 Spring Boot 项目,pom.xml 如下:
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 http://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.3.13</version>
<relativePath/>
</parent>
<groupId>com.hezy</groupId>
<artifactId>nacos_demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- Web依赖 -->
<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>2023.0.3.3</version>
</dependency>
</dependencies>
</project>
注意 Spring Boot 和 nacos 的版本,有兼容问题
(2)application.yml
application.yml 如下:
yaml
server:
port: 8080
spring:
application:
name: nacos-demo
config:
import:
- nacos:nacos-demo.yml?group=demo&namespace=nacos-demo
cloud:
nacos:
config:
enabled: true
namespace: nacos-demo
server-addr: localhost:8848
file-extension: yml
group: demo
import-check:
enabled: false
最后的 import-check: enabled=false
是启动时配置校验,=true
时发现在 nacos 上找不到该服务的配置启动会报错。
(3)云端创建配置
在 nacos 控制台,对应 namespace 下对应的 group 下创建一个配置,配置名(data id)要与项目中配置的服务名与设置的扩展名(yml)一致,如下:

使用
在代码的 Service 层,读取某个配置项
java
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;
@RefreshScope
@Service
public class DemoServiceImpl implements DemoService {
@Value("${demo.name}")
private String name;
@Override
public String demo() {
return name;
}
}
注意类上要加 @RefreshScope
注解,该注解可热更新配置。nacos 配置的内容如下:

启动项目,调用接口

修改 nacos 配置值

再次调用接口,读取的是修改后的配置

控制台有打印日志

总结
本文介绍了单体项目使用 Nacos 作为云端配置中心使用,作为注册中心,则引入下面这个依赖
xml
<!-- 注册依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2023.0.3.3</version>
</dependency>
配置文件如下:
yml
spring:
application:
name: nacos-demo
cloud:
nacos:
discovery:
namespace: nacos-demo
server-addr: localhost:8848
group: demo