参照官网地址
错误使用例子
官方例子 pom.xml依赖 没有包含spring-boot parent和web依赖
< dependency>
< groupId> com. alibaba. boot< / groupId>
< artifactId> nacos- config- spring- boot- starter< / artifactId>
< version> 0.2 .7 < / version>
< / dependency>
application.properties nacos服务地址
# 可以不用配置 默认这个地址
nacos. config. server- addr= 127.0 .0 .1 : 8848
NacosConfigApplication spring-boot启动类
import com. alibaba. nacos. spring. context. annotation. config. NacosPropertySource;
import org. springframework. boot. SpringApplication;
import org. springframework. boot. autoconfigure. SpringBootApplication;
@SpringBootApplication
@NacosPropertySource ( dataId = "example.properties" , autoRefreshed = true )
public class NacosConfigApplication {
public static void main ( String[ ] args) {
SpringApplication. run ( NacosConfigApplication. class , args) ;
}
}
import com. alibaba. nacos. api. config. annotation. NacosValue;
import org. springframework. stereotype. Controller;
import org. springframework. web. bind. annotation. RequestMapping;
import org. springframework. web. bind. annotation. ResponseBody;
import static org. springframework. web. bind. annotation. RequestMethod. GET;
@Controller
@RequestMapping ( "config" )
public class ConfigController {
@NacosValue ( value = "${useLocalCache:false}" , autoRefreshed = true )
private boolean useLocalCache;
@NacosValue ( value = "${group.name:groupName}" , autoRefreshed = true )
private String groupName;
@RequestMapping ( value = "/get" , method = GET)
@ResponseBody
public boolean get ( ) {
return useLocalCache;
}
@RequestMapping ( value = "/g" , method = GET)
@ResponseBody
public String g ( ) {
return groupName;
}
}
原因分析
在Nacos中配置属性值 Data ID定义
Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。
一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。
Data ID 通常采用类 Java 包(如 com. taobao. tc. refund. log. level)的命名规则保证全局唯一性。此命名规则非强制。
默认DataId生成规则
s
p
r
i
n
g
.
a
p
p
l
i
c
a
t
i
o
n
n
.
n
a
m
e
−
{spring.applicationn.name}-
s p r i n g . a p p l i c a t i o n n . n a m e − {spring.profiles.active}.properties 如果没有定义profile,则命名为${spring.applicationn.name}.properties 可以通过prefix来替换这里的applicationName
spring. cloud. nacos. config. prefix= zbj
spring. cloud. nacos. config. file- extension= properties
spring. cloud. nacos. config. group= dev
默认文件名为properties,0.2.7之前,仅支持yaml和properties配置 spring.profiles.active 用于多环境配置 在resources目录下,有application-dev.properties、application-product.properties等文件时,只需要修改spring.profiles.active配置即可 获取值为配置中心最新值,不是自定义的groupName 配置中心修改后,没有获取到最新值 很尴尬,竟然能动态获取了,两三天没搞,尽然没法复现了 😓 无意间查看 NacosValue注解 使用规则 官方示例也是使用驼峰命名 这个问题先放着,之后遇到再补充
Nacos增加注释方式
注释单独一行 如下所示 上图提示不影响提交和使用 注: 注释在对应value之后,不能正常读取,如下
group. name= groupName44 # 这里注释后,属性值改变后不能动态更新