关于BeanFactory,FactoryBean,ObjectFactory
2016-10-10 20:15
281 查看
在看ObjectFactoryCreatingFactoryBean这个类的意思时,被FactoryBean,BeanFactory,ObjectFactory这几个接口弄的有点蒙。现在说一下这几个接口的作用:
BeanFactory:
这个接口用作管理Bean的容器,Spring中生成的Bean都是由这个接口的实现来管理的。
FactoryBean:
这个接口使你可以提供一个复杂的逻辑来生成Bean。它本质是一个Bean,但这个Bean不是用来注入到其它地方像Service、Dao一样使用的,它是用来生成其它Bean使用的。实现了这个接口后,Spring在容器初始化时,把实现这个接口的Bean取出来,使用接口的getObject()方法来生成我们要想的Bean。当然,那些生成Bean的业务逻辑也要写getObject()方法中。BeanFactory和FactoryBean的使用方法,请看:http://chenzehe.iteye.com/blog/1481476
ObjectFactory:
它的目的也是做为一个工厂,来生成Object(这个接口只有一个方法getObject())。这个接口一般被用来,包装一个factory,通过个这工厂来返回一个新实例(prototype类型)。这个接口和FactoryBean有点像,但FactoryBean的实现是被当做一个SPI(Service Provider Interface)实例来使用在BeanFactory里面;ObjectFactory的实现一般被用来注入到其它Bean中,作为API来使用。就像ObjectFactoryCreatingFactoryBean的例子,它的返回值就是一个ObjectFactory,这个ObjectFactory被注入到了Bean中,在Bean通过这个接口的实例,来取得我们想要的Bean。
总的来说,FactoryBean和ObjectFactory都是用来取得Bean,但使用的方法和地方不同,FactoryBean被配置好后,Spring调用getObject()方法来取得Bean,ObjectFactory配置好后,在Bean里面可以取得ObjectFactory实例,需要我们手动来调用getObject()来取得Bean。
(Service Provider Interface:SPI是一种API,这种API被第三方来实现或扩展。它可以被用来扩展框架或实现组件替换功能)
BeanFactory:
这个接口用作管理Bean的容器,Spring中生成的Bean都是由这个接口的实现来管理的。
FactoryBean:
这个接口使你可以提供一个复杂的逻辑来生成Bean。它本质是一个Bean,但这个Bean不是用来注入到其它地方像Service、Dao一样使用的,它是用来生成其它Bean使用的。实现了这个接口后,Spring在容器初始化时,把实现这个接口的Bean取出来,使用接口的getObject()方法来生成我们要想的Bean。当然,那些生成Bean的业务逻辑也要写getObject()方法中。BeanFactory和FactoryBean的使用方法,请看:http://chenzehe.iteye.com/blog/1481476
ObjectFactory:
它的目的也是做为一个工厂,来生成Object(这个接口只有一个方法getObject())。这个接口一般被用来,包装一个factory,通过个这工厂来返回一个新实例(prototype类型)。这个接口和FactoryBean有点像,但FactoryBean的实现是被当做一个SPI(Service Provider Interface)实例来使用在BeanFactory里面;ObjectFactory的实现一般被用来注入到其它Bean中,作为API来使用。就像ObjectFactoryCreatingFactoryBean的例子,它的返回值就是一个ObjectFactory,这个ObjectFactory被注入到了Bean中,在Bean通过这个接口的实例,来取得我们想要的Bean。
总的来说,FactoryBean和ObjectFactory都是用来取得Bean,但使用的方法和地方不同,FactoryBean被配置好后,Spring调用getObject()方法来取得Bean,ObjectFactory配置好后,在Bean里面可以取得ObjectFactory实例,需要我们手动来调用getObject()来取得Bean。
(Service Provider Interface:SPI是一种API,这种API被第三方来实现或扩展。它可以被用来扩展框架或实现组件替换功能)
相关文章推荐
- Spring学习笔记 关于FactoryBean接口的使用
- 关于Spring中配置LocalSessionFactoryBean来生成SessionFactory
- 关于AnnotationSessionFactoryBean和LocalSessionFactoryBean的区别
- Spring关于使用注解@Configuration去配置FormattingConversionServiceFactoryBean来实现自定义格式字符串处理无效的问题(未找到是什么原因造成的)
- 关于LocalSessionFactoryBean
- 关于org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFac
- 关于No bean named 'sessionFactory' is defined的诡异事件
- String关于BeanFactory与ApplicationContext的简单区别
- 项目中遇到关于OpenSessionInViewFilter的默认sessionFactoryBeanName的问题
- 关于spring的BeanFactory在使用注解的注解事项
- 关于实现了接口BeanPostProcessor 和 接口FactoryBean 的注意事项
- 关于Failed to convert property value of type [org.quartz.impl.StdScheduler] to required type [org.springframework.scheduling.quartz.SchedulerFactoryBean
- 关于Spring的Aware接口和后置处理器接口(BeanPostProcessor和BeanFactoryPostProcessor)的一些想法
- 关于LocalSessionFactoryBean
- 关于将SipServlet的SipFactory注入到JavaEE 6的Bean中的折腾
- 关于Spring中配置LocalSessionFactoryBean来生成SessionFactory
- 关于SpringMVC中org.springframework.beans.factory.BeanCreationException: Could not autowire field:的问题的解决
- 关于Spring中配置LocalSessionFactoryBean来生成SessionFactory
- 使用FactoryBean接口简化工厂Bean开发
- BeanFactory与ApplicationContext学习