BeanFactory 和FactoryBean有什么区别?

2019-06-17  本文已影响0人  以南之南_b9a1

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多种实现

上一篇 下一篇

猜你喜欢

热点阅读