如果是factorybean直接就返回这个实例了,并没有调用getObject方法

来源:8-2 夺取doGetBean之从缓存获取Bean

weixin_慕姐4531818

2020-06-30

protected Object getObjectForBeanInstance(
Object beanInstance, String name, String beanName, @Nullable RootBeanDefinition mbd) {

	//  是否是factorybean? 判断方法为是否以&开头11    Don't let calling code try to dereference the factory if the bean isn't a factory.
	if (BeanFactoryUtils.isFactoryDereference(name)) {
		//nullbean
		if (beanInstance instanceof NullBean) {
			return beanInstance;
		}
		//乱取beanname ?
		if (!(beanInstance instanceof FactoryBean)) {
			throw new BeanIsNotAFactoryException(beanName, beanInstance.getClass());
		}
		if (mbd != null) {
			mbd.isFactoryBean = true;
		}
		return beanInstance;
	}
写回答

1回答

翔仔

2020-07-30

同学好,确实是这样的,如果你是把FactoryBean当作Bean实例来获取的话,因为在getBean里面加了&前缀

0
0

剑指Java自研框架,决胜Spring源码

快速入门Spring核心源码+从零开发自研框架

1498 学习 · 495 问题

查看课程