-
-
Notifications
You must be signed in to change notification settings - Fork 84
Closed
Description
- 我已经检查过discussions
- 我已经搜索过issues
- 我已经仔细检查过FAQ
描述bug
在apollo-client 模块里面,SpringValueDefinitionProcessor 中有如下代码块:
public static Multimap<String, SpringValueDefinition> getBeanName2SpringValueDefinitions(BeanDefinitionRegistry registry) {
Multimap<String, SpringValueDefinition> springValueDefinitions = beanName2SpringValueDefinitions.get(registry);
if (springValueDefinitions == null) {
springValueDefinitions = LinkedListMultimap.create();
}
return springValueDefinitions;
}这段代码我怎么看着有点迷糊,当不存在时,就新那一个返回出去,但是这个新建的对象并没有保存下来,也就是说当我多次调用时,返回的是不同的实例对象,那这段代码有什么意义呢?
其次没有加锁
对于目前来说似乎没有问题,但看样子是因为这里的调用总是不会返回null,因为SpringValueDefinitionProcessor 是BeanDefinitionRegistryPostProcessor 而SpringValueProcessor 是BeanFactoryPostProcessor, BeanDefinitionRegistryPostProcessor 的运行优先级比BeanFactoryPostProcessor 高,所以在SpringValueDefinitionProcessor 已经初始化了,所以在SpringValueProcessor 中调用SpringValueDefinitionProcessor.getBeanName2SpringValueDefinitions(..) 这个方法的时候总是存在值了。
单看这一个方法它的逻辑是有问题的,但从spring 的整体机制来讲这个BUG 不会触发。
简洁明了地描述一下bug
。
复现
。
通过如下步骤可以复现:
期望
简介明了地描述你希望正常情况下应该发生什么
截图
如果可以,附上截图来描述你的问题
额外的细节和日志
- 版本:
- 错误日志
- 配置:
- 平台和操作系统
Metadata
Metadata
Assignees
Labels
No labels