Spring框架源码整理:BeanFactory接口源码阅读

类路径:org.springframework.beans.factory.BeanFactory

BeanFactory是Spring IOC实现的基础,提供了getBean方法(),isSingleton(),isPrototype(name),isTypeMatch(),getType和String[] getAliases(String name)等核心方法。

String FACTORY_BEAN_PREFIX = "&";

接口中包含了一个成员变量,内容从变量命名上看,是factorybean的前缀。注释的英文描述:

/**
 * Used to dereference a {@link FactoryBean} instance and distinguish it from
 * beans <i>created</i> by the FactoryBean. For example, if the bean named
 * {@code myJndiObject} is a FactoryBean, getting {@code &myJndiObject}
 * will return the factory, not the instance returned by the factory.
 */

翻译过来,这个前缀用于间接引用一个FactoryBean实例,并把它与用FactoryBean”创建“的beans区分开来。例如:如果bean名为myJndiObject是一个FactoryBean,get &myJndiObject将会return工厂,而不是由工厂创建的实例。

查看被调用关系,可以查到在DefaultListableBeanFactory,BeanFactoryUtils,AbstractAutoProxyCreator这三个类中都有使用(不止这三个类)。

先看BeanFactoryUtils中的使用位置:

public static boolean isFactoryDereference(@Nullable String name) {
		return (name != null && name.startsWith(BeanFactory.FACTORY_BEAN_PREFIX));
	}

是判断一个输入字符串,是否是否是间接引用。

可见,方法是用语判断输入的bean(名称)是否是间接引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值