Spring Boot单体项目整合Nacos

说明: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
相关推荐
IT_陈寒3 分钟前
Python开发者的效率革命:这5个技巧让你的代码提速50%!
前端·人工智能·后端
MekoLi2918 分钟前
Spring AI 与 LangChain4j 从入门到精通:Java 后端开发者的 AI 实战手册
后端·面试
我真会写代码18 分钟前
深度解析并发编程锁升级:从偏向锁到重量级锁,底层原理+面试考点全拆解
java·并发编程·
树獭叔叔22 分钟前
从RLHF到PPO:让AI学会说人话
后端·aigc·openai
Meepo_haha24 分钟前
创建Spring Initializr项目
java·后端·spring
会编程的土豆24 分钟前
C++中的 lower_bound 和 upper_bound:一篇讲清楚
java·数据结构·算法
Memory_荒年25 分钟前
SpringBoot事务源码深度游:从注解到数据库的“奇幻漂流”
java·后端·spring
编码忘我28 分钟前
为什么要用SpringBoot
java·后端
神舟之光30 分钟前
Java面向对象编程知识补充学习-2026.3.21
java·开发语言·学习
Memory_荒年38 分钟前
SpringBoot事务:从“一键开关”到“踩坑大全”的生存指南
java·后端·spring