类路径: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(名称)是否是间接引用。