BeanFactory是维护bean定义以及相互依赖关系的高级工厂接口。通过 BeanFactory可以访问bean定义。下面创建了一个bean工厂,此工厂将从xml文件中读取bean定义:
InputStream is = new FileInputStream("beans.xml");
BeanFactory factory = new XmlBeanFactory(is);
        接着使用 getBean(String)方法就可以取得bean的实例; BeanFactory提供的方法极其简单。它提供了六种方法供客户代码调用:
  • boolean containsBean(String):如果 BeanFactory包含给定名称的bean定义(或bean实例),则返回true
  • Object getBean(String):返回以给定名字注册的bean实例。根据bean的配置情况,如果为singleton模式将返回一个共享的实例,否则将返回一个新建的实例。如果没有找到指定的bean,该方法可能会抛出 BeansException异常(实际上将抛出 NoSuchBeanDefinitionException异常),在对bean进行实例化和预处理时也可能抛出异常
  • Object getBean(String, Class):返回以给定名称注册的bean实例,并转换为给定class类型的实例,如果转换失败,相应的异常( BeanNotOfRequiredTypeException)将被抛出。上面的 getBean(String)方法也适用该规则。
  • Class getType(String name):返回给定名称的bean的 Class。如果没有找到指定的bean实例,则抛出 NoSuchBeanDefinitionException异常。
  • boolean isSingleton(String):判断给定名称的bean定义(或bean实例)是否为singleton模式(singleton将在 bean的作用域中讨论),如果bean没找到,则抛出 NoSuchBeanDefinitionException异常。
  • String[] getAliases(String):返回给定bean名称的所有别名。