[ Spring ] Nacos Config Auto Refresh 2025

文章目录

          • [Add Dependencies](#Add Dependencies)
          • [Configure Properties](#Configure Properties)
          • [Nacos Application](#Nacos Application)
          • [Nacos Config](#Nacos Config)
          • [Nacos Controller](#Nacos Controller)
          • [Add Config File to Nacos Server](#Add Config File to Nacos Server)
          • [Start and Visit Service](#Start and Visit Service)
Add Dependencies
kotlin 复制代码
plugins {
    id("org.jetbrains.kotlin.jvm") version "2.0.21" apply false
    id("org.jetbrains.kotlin.kapt") version "2.0.21" apply false
    id("org.jetbrains.kotlin.plugin.spring") version "2.0.21" apply false
    id("org.springframework.boot") version "3.4.1" apply false
}
kotlin 复制代码
plugins {
    id("org.jetbrains.kotlin.jvm")
    id("org.jetbrains.kotlin.kapt")
    id("org.jetbrains.kotlin.plugin.spring")
    id("org.springframework.boot")
}

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
}

dependencies {
    val springBootVersion = "3.4.1"
    val springCloudVersion = "4.2.0"
    // commons
    api("io.github.hellogoogle2000:kotlin-commons:1.0.19")
    // kotlin
    api("org.jetbrains.kotlin:kotlin-reflect:2.0.21")
    // spring
    api("org.springframework.boot:spring-boot-starter:$springBootVersion")
    api("org.springframework.boot:spring-boot-starter-web:$springBootVersion")
    api("org.springframework.boot:spring-boot-devtools:$springBootVersion")
    api("org.springframework.cloud:spring-cloud-starter-bootstrap:$springCloudVersion")
    // nacos config
    api("com.alibaba.nacos:nacos-spring-context:2.1.1")
    api("com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2023.0.3.2")
    api("com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2023.0.3.2")
}
Configure Properties

config file must named to bootstrap.properties

properties 复制代码
# service
server.port=10003
spring.application.name=nacos-app
Nacos Application
kotlin 复制代码
package x.spring.hello

import com.alibaba.nacos.api.annotation.NacosProperties
import com.alibaba.nacos.api.config.ConfigType
import com.alibaba.nacos.spring.context.annotation.EnableNacos
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication

@EnableNacos(
    globalProperties = NacosProperties(
        serverAddr = "localhost:8848",
        username = "root",
        password = "123456",
        namespace = "public"
    )
)
@NacosPropertySource(
    type = ConfigType.JSON,
    dataId = "nacos-app-dev.json",
    groupId = "DEFAULT_GROUP",
    autoRefreshed = true
)
@SpringBootApplication
class NacosClientApplication

fun main(args: Array<String>) {
    runApplication<NacosClientApplication>(*args)
}
Nacos Config
kotlin 复制代码
package x.spring.hello.component

import com.alibaba.nacos.api.config.ConfigType
import com.alibaba.nacos.api.config.annotation.NacosConfigurationProperties
import org.springframework.stereotype.Component

@Component
@NacosConfigurationProperties(
    type = ConfigType.JSON,
    dataId = "nacos-app-dev.json",
    groupId = "DEFAULT_GROUP",
    autoRefreshed = true
)
data class NacosDevConfig(
    var username: String = "",
    var password: String = ""
)
Nacos Controller
kotlin 复制代码
package x.spring.hello.controller

import org.springframework.beans.factory.annotation.Autowired
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
import x.kotlin.commons.serialize.JSON.toJson
import x.spring.hello.component.NacosDevConfig

@RestController
class NacosConfigController {

    @Autowired
    private lateinit var config: NacosDevConfig

    @GetMapping("/config")
    fun all(): String {
        return config.copy().toJson()
    }
}
Add Config File to Nacos Server

server config file must match client annotations

properties 复制代码
http://localhost:8848/nacos
properties 复制代码
namespace : public
data-id : nacos-app-dev.json
group : DEFAULT_GROUP
format : JSON
json 复制代码
{
    "username": "root",
    "password": "123456"
}
Start and Visit Service
properties 复制代码
http://localhost:10003/config

modify server config file, then client config values will automatically reload

相关推荐
有梦想的攻城狮1 小时前
spring中的@Lazy注解详解
java·后端·spring
zizisuo5 小时前
面试篇:Spring MVC
java·spring·mvc
-曾牛5 小时前
Spring AI 与 Hugging Face 深度集成:打造高效文本生成应用
java·人工智能·后端·spring·搜索引擎·springai·deepseek
计算机学姐6 小时前
基于SpringBoot的小区停车位管理系统
java·vue.js·spring boot·后端·mysql·spring·maven
zhangphil6 小时前
Kotlin高阶函数多态场景条件判断与子逻辑
kotlin
添砖Java中7 小时前
深入剖析缓存与数据库一致性:Java技术视角下的解决方案与实践
java·数据库·spring boot·spring·缓存·双写一致性
天上掉下来个程小白8 小时前
添加购物车-02.代码开发
java·服务器·前端·后端·spring·微信小程序·苍穹外卖
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧18 小时前
MyBatis快速入门——实操
java·spring boot·spring·intellij-idea·mybatis·intellij idea
东阳马生架构19 小时前
Nacos源码—8.Nacos升级gRPC分析三
nacos
bing_15820 小时前
Spring MVC 中Model, ModelMap, ModelAndView 之间有什么关系和区别?
java·spring·mvc