BeanFactory是Spring IOC容器的鼻祖,是IOC容器的基础接口,所有的容器都是从它这里继承实现而来。可见其地位。BeanFactory提供了最基本的IOC容器的功能,即所有的容器至少需要实现的标准。
BeanFactory体系结构是典型的工厂方法模式,即什么样的工厂生产什么样的产品。BeanFactory是最基本的抽象工厂,而其他的IOC容器只不过是具体的工厂,对应着各自的Bean定义方法。但同时,其他容器也针对具体场景不同,进行了扩充,提供具体的服务。
(一) BeanFactory体系
(二)BeanFactory职责
(1)BeanFactory
- 功能说明
总结:核心功能通过beanname从工厂中获取类单个实例
访问Spring bean容器的根接口,这是bean容器的基本客户端视图;
进一步的接口,如@link ListableBeanFactory和
{ org.springframework.beans.factory.config.ConfigurableBeanFactory }可用于特定目的。
这个接口是由拥有许多bean定义的对象实现的,
1.每个都由一个字符串名惟一地标识。根据bean的定义,工厂将返回一个包含对象的独立实例(原型设计模式),或者单个共享实例(上级替代单例设计模式,其中实例为a在工厂的范围内单例模式)。将会返回哪种类型的实例取决于bean工厂的配置:API是相同的。因为spring根据具体的应用程序,可以使用进一步的范围上下文(如。在web环境中“请求”和“会话”作用域)。这种方法的目的是,BeanFactory是一个中心注册中心应用程序组件,并集中应用程序配置组件(不再需要单独的对象读取属性文件,
2.Spring的依赖注入功能是使用这个BeanFactory接口及其子接口实现。通常,一个BeanFactory将载入存储在配置中的bean定义源(例如XML文档),并使用{ @code org.springframework.beans }打包以配置bean。但是,实现可以简单地返回
它在Java代码中直接创建的Java对象。没有关于如何存储定义的约束:LDAP、RDBMS、XML,支持引用的属性文件,等等。在bean(依赖注入)。与@link ListableBeanFactory的方法相比,所有的这个接口中的操作也会检查父工厂是否为a
{ @link HierarchicalBeanFactory }。如果在这个工厂实例中没有发现bean,将会询问直接的母工厂。这个工厂实例中的bean应该在任何父工厂中覆盖相同名称的bean。
- 功能列表
1.获取bean实例对象
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;<T> T getBean(Class<T> requiredType, Object... args) throws BeansException;2.判断性功能(是否包含bean,是否单例模式,是否原型模式)
boolean containsBean(String name);
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;boolean isPrototype(String name) throws NoSuchBeanDefinitionException;3.获取对象类型
Class<?> getType(String name) throws NoSuchBeanDefinitionException;String[] getAliases(String name);下一章: 《spring4.2源码分析(一)组件-BeanFactory系列(2-ListAbleFactory)》