BeanFactory 是Spring原始的Factory,XmlBeanFactory 就是BeanFactory 的一种实现方式,而XmlBeanFacotry不支持Aop,Web的插件等等。
而ApplicationContext 借口继承BeanFactory 它支持BeanFactory,接口所有的功能。
区别
BeanFactory是个接口,提供了IOC最基本的实现,给具体的IOC容器 提供了规范。BeanFactory是个Factory,也就是容器工厂或者对象工厂,在Spring 中,所有的对象都是由BeanFactory管理的。但是对于FactoryBean而言,这个Bean 他不是简单的bean,他是一个能生产或者修饰对象的bean。
FactoryBean 也是一个接口为IOC容器中Bean的实现,提供了更加灵活的实现方式,FactoryBean在Bean实现的方式上,加了一个工厂模式,一个装饰者模式。
详细介绍
1.BeanFactory:以Factory 结尾说明他是一个工厂,它负责生产和管理bean,在Spring中,BeanFactory是IOC容器实现的接口,它并不是IOC容器的实现,但是Spring 给了IOC容器的很多实现,如:XmlBeanFactory,DefaultListenBeanFactory,ApplicationContext,其中XmlBeanFactory 就是常用的一个,该实现将以XML方式描述组成应用的对象及对象间的依赖关系,BeanFacotry是spring中比较原始的Factory。如XMLBeanFactory就是一种典型的BeanFactory。
原始的BeanFactory无法支持spring的许多插件,如AOP功能、Web应用等。ApplicationContext接口,它由BeanFactory接口派生而来, ApplicationContext包含BeanFactory 所有的功能
2.FactoryBean:一般情况下,Spring通过反射机制通过<bean>的class 属性来获取bean,某些情况下实例化Spring比较复杂,按照传统的方式,配置有限,Spring提供了org.springframework.bean.factory.FactoryBean的工厂类接口,用户可以通过该接口定制该bean的逻辑,Spring对FactoryBean 提供了70多种实现
网友评论