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
相关推荐
信码由缰8 小时前
单体架构中的事件驱动架构:Java应用程序的渐进式重构
java
用户1106309755068 小时前
CSDN-uniapp陪诊小程序
后端
初学小白...9 小时前
实现Runnable接口
java·开发语言
37手游后端团队9 小时前
构建AI会话质检平台:技术架构与实践分享
人工智能·后端
JavaArchJourney9 小时前
分布式事务与最终一致性
分布式·后端
阿杰AJie9 小时前
Jackson 常用注解与完整用法总结
后端·sql
李少兄9 小时前
记一次 Spring Boot 项目中 Redis 工具类的重构实践
spring boot·redis·重构
墨着染霜华9 小时前
Java Optional orElse orElseGet orElseThrow()
java
czhc11400756639 小时前
JAVA1026 方法;类:抽象类、抽象类继承;接口、接口继承 Linux:Mysql
java·linux·mysql
智能小怪兽9 小时前
ubuntu desktop激活root
后端