[ 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

相关推荐
evans在进步1 小时前
HashMap 为什么线程不安全?ConcurrentHashMap 如何解决?
java·spring boot·spring
我命由我123451 小时前
匈牙利命名法
java·服务器·后端·学习·java-ee·kotlin·学习方法
4 小时前
Android 自定义 View 实战:从零打造工业级全向摇杆控件(OmniJoystickView)
android·kotlin·自定义view·摇杆控件
雨白4 小时前
深入理解 Kotlin 协程 (十一):以逸待劳,探秘 select 多路复用与并发安全策略
android·kotlin
XS0301065 小时前
Spring AI:两种内置 Advisor 快速实现 RAG
java·人工智能·spring
刘名喜6 小时前
第22篇-数据库迁移-Liquibase
kotlin·springboot
刘名喜7 小时前
第30篇-Spring-Security-7核心概念
后端·kotlin·springboot
风起洛阳@不良使7 小时前
Spring MVC的前端控制器配置(servlet+DispatcherServlet)
前端·spring·mvc
我命由我123459 小时前
Jetpack Compose - Material Design 断点范围、WindowSizeClass、针对不同屏幕尺寸创建预览、四类导航栏
android·java·开发语言·java-ee·kotlin·android jetpack·android runtime
Pluchon20 小时前
Java个人综合项目——萌部落社区V2.0
java·python·spring·spring cloud·postman·idea