[ 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

相关推荐
从零开始学安卓5 分钟前
Kotlin(二) 单例的加载
前端·kotlin
Foyo Designer1 小时前
【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的国际化:支持多语言的 RESTful API
java·spring boot·redis·后端·spring·缓存·restful
高林雨露2 小时前
Java 与 Kotlin 对比学习指南(二)
java·开发语言·kotlin
高林雨露3 小时前
Kotlin 基础语法解析
android·开发语言·kotlin
用键盘当武器的秋刀鱼3 小时前
springBoot统一响应类型3.5版本
java·spring boot·spring
栗筝i3 小时前
Spring 核心技术解析【纯干货版】- XV:Spring 网络模块 Spring-Web 模块精讲
前端·网络·spring
tangweiguo030519873 小时前
(Kotlin)Android 高效底部导航方案:基于预定义 Menu 和 ViewPager2 的 Fragment 动态绑定实现
android·开发语言·kotlin
QING6184 小时前
Kotlin 操作符与集合/数组方法详解——新手指南
android·kotlin·app
QING6184 小时前
Kotlin 中 == 和 === 的区别
android·kotlin·app
栗筝i5 小时前
Spring 核心技术解析【纯干货版】- XVI:Spring 网络模块 Spring-WebMvc 模块精讲
java·网络·spring