你看图吧老师,我也不知道怎么说
来源:6-9 BeanDefinition的注册
![](http://img1.sycdn.imooc.com/user/5458692c00014e9b02200220-100-100.jpg)
绝世的陈逗逗
2020-09-03
写回答
1回答
-
同学好,好问题,这个地方我的确也有困惑,这里需要同学协助一下,就是造类似如下的case,
public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("application.xml"); Object d1 = context.getBean("d2"); /** 利用获取的d1进行业务操作*/ DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); factory.registerBeanDefinition("我要再注册一个bean",new GenericBeanDefinition());
首先在application.xml里面定义一个叫做test的bean,然后再往factory.registerBeanDefinition("我要再注册一个bean",new GenericBeanDefinition());注册一个bean,名字同样为test,然后执行到这里的时候,肯定会进入到同学截图的if (hasBeanCreationStarted
)里面,提前设置断点看看执行到这里的时候,即 this.beanDefinitionNames = updatedDefinitions;,updatedDefinitions有没有重名的beanName。此外,针对同学的第二个问题,removeManualSingletonName这个方法用来更新的是手工添加的bean的信息,如果发现自动注册进来的beanname和手工添加的重合了,就移除,你这里没有手工添加,所以就不需要移除了
https://www.cnblogs.com/hfultrastrong/p/9983409.html
022021-06-22
相似问题