@Configuration
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))
@NacosPropertySource(dataId = "example", autoRefreshed = true, type = ConfigType.JSON)
配置nacos后,使用@NacosValue获取不到配置信息,但是使用spring提供的@Value可以获取到配置信息
@Configuration
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))
@NacosPropertySource(dataId = "example", autoRefreshed = true, type = ConfigType.JSON)
配置nacos后,使用@NacosValue获取不到配置信息,但是使用spring提供的@Value可以获取到配置信息
1 回答1.4k 阅读
1 回答1.1k 阅读
844 阅读
我服了,为了回答你这个问题,我还得注册个账号,下次能不能换个地方问,你说的这个问题我也遇到了,下边我详细说一下,看看咱2的问题是不是一样的。
在我下边的代码里,@Value可以拿到值, @NacosValue拿不到值,但是我可以确定我的nacos配置生效了。
1.我的spring boot web启动端口配置在nacos上,本地配置文件没有设置启动端口,程序启动的时候端口生效了。
2.我用的不是nacos原生,而是用的spring-cloud-starter-alibaba-nacos-config
maven依赖如下
3.这个是重点,我以为正常应该用@NacosValue来获取配置,只是因为阿里适配了Spring所以我用@Value也能拿到值,但是我错了,下边是阿里官网的说明
After completing the above two steps, the application will get the externalized configuration from Nacos Server and put it in the Spring Environment's PropertySources.We use the @Value annotation to inject the corresponding configuration into the userName and age fields of the SampleController, and add @RefreshScope to turn on dynamic refresh .
所以按照阿里官网的意思,正常就应该用@Value而不应该用@NacosValue,而且他们官网的例子里写的也是@Value。当然,如果你用的不是spring-cloud-starter-alibaba-nacos-config,那说明咱2的问题还不一样,总之我不再纠结这个问题了,虽然我还是认为这本身是一个BUG