Spring源码解析-FactoryBean

如果一个对象实现了BeanFactory它本身就是一个工厂,BeanFactory.getBean返回的一个对象,不是原来对象的本身,而是原来对象的代理对象。

FactoryBeans 可以支持单例和原型,并且可以要么根据需要懒惰地创建对象,要么在启动时急切地创建对象。
{@link SmartFactoryBean} 接口允许暴露更细粒度的行为元数据。

FactoryBean它是一个bean,但是它是一个特殊的Bean是工厂。
FactoryBean本身它所创建出来的对象并不是FactoryBean这个实例本身,而是由这个FactoryBean工厂所创建出来的对象。

FactoryBean这个接口在框架本身内被大量使用,因为AOP的示例{@linkorg.springframework.aop.framework.ProxyFactoryBean}或 {@linkorg.springframework.jndi.JndiObjectFactoryBean}。
它也可以用于应用程序组件;然而这在基础设施代码之外并不常见。

BeanFactory和FactoryBean的区别:

  • BeanFactory它是整个Spring容器的一个根容器它里面描述了在所有的子接口或者子类当中对于容器的一些处理原则,职责到底是什么,生命周期的一些方法的约定。
  • FactoryBean本身是存活在BeanFactory当中的它本身也是一个工厂,这个工厂的作用是用于创建由FactoryBean所能创建的对象,在创建出来的这个对象的前面或者后面时候,可以额外执行一些方法,来实现AOP。

BeanFactory返回对象的方法

<T> T getBean(Class<T> requiredType) BeanFactory根据类型获取一个对象,如果该类型存在多个对象,那么它是如何确定返回唯一的一个对象。

<T> T getBean(Class<T> requiredType, Object... args) throws BeansException; 返回一个覆盖原来设置参数的bean

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享