@NacosValue注解获取不到配置信息

发布于 2022-09-11 23:34:37 字数 270 浏览 20 评论 0

@Configuration
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))
@NacosPropertySource(dataId = "example", autoRefreshed = true, type = ConfigType.JSON)

配置nacos后,使用@NacosValue获取不到配置信息,但是使用spring提供的@Value可以获取到配置信息

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦回梦里 2022-09-18 23:34:37

我服了,为了回答你这个问题,我还得注册个账号,下次能不能换个地方问,你说的这个问题我也遇到了,下边我详细说一下,看看咱2的问题是不是一样的。
在我下边的代码里,@Value可以拿到值, @NacosValue拿不到值,但是我可以确定我的nacos配置生效了。
1.我的spring boot web启动端口配置在nacos上,本地配置文件没有设置启动端口,程序启动的时候端口生效了。
2.我用的不是nacos原生,而是用的spring-cloud-starter-alibaba-nacos-config
maven依赖如下

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>

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

@RestController
public class HelloController {
    @Value("${version:v_1}")
    private String version;

    @NacosValue("${version}")
    private String version2;

    @GetMapping("/getVersion")
    public String getVersion() {
        return version + "," + version2;
    }

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文