Closed ShepherdZFJ closed 6 months ago
User 里面并没有 hello
属性呀
User 里面并没有
hello
属性呀
我并不是想注入hello属性,我是想注入user bean属性,截图1只是为了展示我在nacos客户端中没有配置user的属性,后面代码展示了我在项目代码的配置文件中配置user的属性,但是并没有成功注入,按道理如果nacos客户端没有配置user属性,但是本地配置文件配置了user属性,是不是应该成功注入?
可能是对NacosConfigurationProperties注解的用法不对吧, 建议先用nacos-spring-boot-project里的example试一下对应功能。
可能是对NacosConfigurationProperties注解的用法不对吧, 建议先用nacos-spring-boot-project里的example试一下对应功能。
我个人理解@NacosConfigurationProperties对应@ConfigurationProperties,@NacosValue对应@value注解,当我们没有在nacos配置中心客户端配置相应属性时,这时候应该来读取项目本地文件application.yml,如果本地配置文件配置了,应该能成功注入属性,根据我自己的测试@NacosValue是可以成功注入本地文件配置的属性的,而@NacosConfigurationProperties却不能,所以感觉到疑惑,不知道这么理解对不对,也没有找到文档考证
我感觉不对,至少@NacosValue对应value注解好像不是对应的。
@hujun-w-2 can you help us?
我看看这个问题
@NacosConfigurationProperties与@NacosValue实现的方式不一样 @NacosConfigurationProperties是会从你配置的信息从配置中心获取内容,如果能获取到,再将bean进行赋值 @NacosValue 是先从配置中心获取值,放到environment中,然后设置值的时候是从environment中取,所以能取到本地配置值
@NacosConfigurationProperties与@NacosValue实现的方式不一样 @NacosConfigurationProperties是会从你配置的信息从配置中心获取内容,如果能获取到,再将bean进行赋值 @NacosValue 是先从配置中心获取值,放到environment中,然后设置值的时候是从environment中取,所以能取到本地配置值
我后面看源码实现,跟了一下,大概和你说的差不多🤝,但是这种实现是不是有点不妥?为啥这么搞
好像Springboot版本的依赖确实存在这个问题,spring cloud版本的我尝试应该是没问题
好像Springboot版本的依赖确实存在这个问题,spring cloud版本的我尝试应该是没问题
是的,貌似springboot版本整合的比较粗糙,spring cloud整合nacos使用spring cloud原生注解@RefreshScope就能实现动态刷新了,比较完美
配置nacos配置中心在application.yml是不生效的,应该配置bootstrap.yml就会生效。在springboot初始化时,要先拉取配置中心,才能正常启动。加载配置文件顺序有先后顺序的bootstrap. *>application。 同springboot-config
配置nacos配置中心在application.yml是不生效的,应该配置bootstrap.yml就会生效。在springboot初始化时,要先拉取配置中心,才能正常启动。加载配置文件顺序有先后顺序的bootstrap. *>application。 同springboot-config
nacos的配置要写在bootstrap.yml是springcloud整合nacos的要求,springboot整合并不需要吧,这里探讨的是为什么@NacosConfigurationProperties只能读nacos客户端配置,不能读项目本地的application.yml的配置,但是@NacosValue却能两边都能读
@NacosValue 应该是从environment 获取的数据,应该是拉取数据的时候同步了environment,NacosConfigurationProperties这个没有深入了解过
@NacosValue 应该是从environment 获取的数据,应该是拉取数据的时候同步了environment,NacosConfigurationProperties这个没有深入了解过
后面跟代码发现@NacosConfigurationProperties会新增生成一个environment,并不是从Spring上下文获取环境变量environment,所以压根不会操作本地配置文件
@NacosValue 应该是从environment 获取的数据,应该是拉取数据的时候同步了environment,NacosConfigurationProperties这个没有深入了解过
后面跟代码发现@NacosConfigurationProperties会新增生成一个environment,并不是从Spring上下文获取环境变量environment,所以压根不会操作本地配置文件
那应该就是这里设计的问题,如果调整一下。NacosConfigurationProperties 默认也从本地和远端合并,同时在发布nacos动态配置的时候对environment 也进行数据调整是不是就能让他读取本地的文件了,不过这样的话可能这个组件不太支持 最难搞的是项目进行架构调整的时候注解都要修改nacos开通的相对来说有点难受
Thanks for your feedback and contribution. But the issue/pull request has not had recent activity more than 180 days. This issue/pull request will be closed if no further activity occurs 7 days later. We may solve this issue in new version. So can you upgrade to newest version and retry? If there are still issues or want to contribute again. Please create new issue or pull request again.
问题示例如下:
nacos客户端:没有配置要注入的bean属性
代码如下:
项目代码本地配置application.yml配置:
注入如下:
启动项目,查看user bean对象属性并没有注入成功。。。。。。