package org.springframework.beans.factory;
public interface BeanFactory { // 用来引用一个实例,或把它和工厂产生的 Bean 区分开 // 就是说,如果一个 FactoryBean 的名字为 a ,那么, &a 会得到那个 Factory String FACTORY_BEAN_PREFIX = "&" ; Object getBean ( String name ) throws BeansException ; < T > T getBean ( String name , Class < T > requiredType ) throws BeansException ; < T > T getBean ( Class < T > requiredType ) throws BeansException ; Object getBean ( String name , Object ... args ) throws BeansException ; // 是否存在 boolean containsBean ( String name ); // 是否为单实例 boolean isSingleton ( String name ) throws NoSuchBeanDefinitionException ; // 是否为原型(多实例) boolean isPrototype ( String name ) throws NoSuchBeanDefinitionException ; // 名称、类型是否匹配 boolean isTypeMatch ( String name , Class > targetType ) throws NoSuchBeanDefinitionException ; // 获取类型 Class > getType ( String name ) throws NoSuchBeanDefinitionException ; // 根据实例的名字获取实例的别名 String [] getAliases ( String name ); } 在 BeanFactory 里只对 IOC 容器的基本行为作了定义,根本不关心你的 Bean 是如何定义怎样加载的。正 如我们只关心工厂里得到什么的产品对象,至于工厂是怎么生产这些对象的,这个基本的接口不关心。 源码说明: 4 个获取实例的方法。 getBean 的重载方法。 4 个判断的方法。判断是否存在,是否为单例、原型,名称类型是否匹配。 1 个获取类型的方法、一个获取别名的方法。根据名称获取类型、根据名称获取别名。一目了 然! 总结: 这 10 个方法,很明显,这是一个典型的工厂模式的工厂接口。 ListableBeanFactory 可将 Bean 逐一列出的工厂


