Open Skycat opened 3 years ago
Type: bug report 版本: 1.1.0 CacheableEventPublishingNacosServiceFactory单列缓存导致启动IOC容器关闭后再创建一个IOC容器时会注入 xxxCache中缓存的已销毁的Bean
我们的业务有特殊需求,先后启动了两次spring容器,第一次启动容器完成业务后关闭容器,这时会销毁如CacheableEventPublishingNacosServiceFactory.namingServicesCache中已创建的Bean并执行destroy生命周期方法(会关闭内部线程池),但是cache实例并未移除,导致第二次启动spring容器时会注入已销毁的Bean,出现线程池已关闭的问题
容器关闭时缓存的Bean执行生命周期方法销毁时需要从缓存中移除
1.启动一个IOC容器,某个Bean注入NameService实例,然后关闭IOC容器
你的意思每次容器启动应该是一个全新的实例对吗?
对,因为第二次容器启动注入的是已经销毁的Bean,只是缓存还引用着
好的,我们这边看一下
THX
@I will solve it@
Issue Description
Type: bug report 版本: 1.1.0 CacheableEventPublishingNacosServiceFactory单列缓存导致启动IOC容器关闭后再创建一个IOC容器时会注入 xxxCache中缓存的已销毁的Bean
Describe what happened
我们的业务有特殊需求,先后启动了两次spring容器,第一次启动容器完成业务后关闭容器,这时会销毁如CacheableEventPublishingNacosServiceFactory.namingServicesCache中已创建的Bean并执行destroy生命周期方法(会关闭内部线程池),但是cache实例并未移除,导致第二次启动spring容器时会注入已销毁的Bean,出现线程池已关闭的问题
Describe what you expected to happen
容器关闭时缓存的Bean执行生命周期方法销毁时需要从缓存中移除
How to reproduce it (as minimally and precisely as possible)
1.启动一个IOC容器,某个Bean注入NameService实例,然后关闭IOC容器
Tell us your environment
Anything else we need to know?