[ 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

相关推荐
超龄超能程序猿2 小时前
Spring 应用中 Swagger 2.0 迁移 OpenAPI 3.0 详解:配置、注解与实践
java·spring boot·后端·spring·spring cloud
洛阳泰山2 小时前
Spring Boot 整合 Nacos 实战教程:服务注册发现与配置中心详解
java·spring boot·后端·nacos
en-route2 小时前
Http请求中的特殊字符
spring·http
fouryears_2341710 小时前
Spring,Spring Boot 和 Spring MVC 的关系以及区别
java·spring boot·spring·mvc
玄辰星君13 小时前
【MAC】nacos 2.5.1容器docker安装
macos·docker·nacos
设计师小聂!17 小时前
尚庭公寓----------分页查询
java·开发语言·spring·maven·mybatis
livemetee19 小时前
springboot 整合spring-kafka客户端:SASL_SSL+PLAINTEXT方式
spring boot·spring·kafka
要开心吖ZSH19 小时前
Spring Cloud LoadBalancer 详解
后端·spring·spring cloud
CodeWolf1 天前
Filter过滤器和Interceptor拦截器的使用和区别
spring