查看源码:
// Now we have the bean instance, which may be a normal bean or a FactoryBean. // If it's a FactoryBean, we use it to create a bean instance, unless the // caller actually wants a reference to the factory. if (!(beanInstance instanceof FactoryBean) || BeanFactoryUtils.isFactoryDereference(name)) { return beanInstance; }
/** * Return whether the given name is a factory dereference * (beginning with the factory dereference prefix). * @param name the name of the bean * @return whether the given name is a factory dereference * @see BeanFactory#FACTORY_BEAN_PREFIX */ public static boolean isFactoryDereference(String name) { return (name != null && name.startsWith(BeanFactory.FACTORY_BEAN_PREFIX)); }
String FACTORY_BEAN_PREFIX = "&";
所以很简单,只要beanname 之前加上了&符号就会直接返回该FactoryBean