nacos-group / nacos-spring-project

Nacos ECO Project for Spring Framework
https://nacos.io/
Apache License 2.0
756 stars 311 forks source link

issues87 修复在多个/多级SpringContext并存环境下,EventPublishingConfigService发送事件混乱,引发后续依赖事… #260

Open ittxy opened 3 years ago

ittxy commented 3 years ago

…件机制的系列问题,如@NacosValue注解无法解析到最新值

Please do not create a Pull Request without creating an issue first.

What is the purpose of the change

修复在多个/多级SpringContext并存环境下,EventPublishingConfigService发送事件混乱,引发后续依赖事件机制的系列问题,如@NacosValue注解无法解析到最新值

Brief changelog

Verifying this change

  1. 应用可能出现多个SpringContext, 如一般的SpringMvc项目,包含SpringMvc容器和Root容器,SpringMvc容器的parent指向Root容器,它们是上级层级关系 2.CacheableEventPublishingNacosServiceFactory拥有字段(ConfigurableApplicationContext context),它能作为单例使用的前提条件是,应用的只有存在一个容器单独使用Nacos,而多个SpringContext同时使用Nacos,就可能引发创建的ConfigService是(上一个SpringContext创建的,被缓存) 3.基于以上,此PR删除CacheableEventPublishingNacosServiceFactory.getSingleton()获取单例的方法,将CacheableEventPublishingNacosServiceFactory对象的创建关联到容器

Follow this checklist to help us incorporate your contribution quickly and easily:

ittxy commented 3 years ago

@nacos 注解在项目启动后,修改无法更新的 复现 样例代码地址是 https://github.com/ittxy/nacos-bug-in-spring-context

ittxy commented 3 years ago

该PR:需要分别在applicationContext.xml与servlet.xml中同时注册NacosConfig(EnableNacosConfig配置一致),因为父容器无法感知子容器的存在。 https://github.com/nacos-group/nacos-spring-project/issues/87

CLAassistant commented 1 year ago

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.


zhijie.zheng seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.