Spring的BeanFactory与FactoryBean的区别,你现在懂了吗?( 二 )


例如??实现?个 FactoryBean,功能:?来代理?个对象 , 对该对象的所有?法做?个拦截,在调?前后都输出??LOG , 模仿 ProxyFactoryBean 的功能 。
FactoryBean ?个接?,当在IOC容器中的 Bean 实现了 FactoryBean 后,通过 getBean(StringBeanName) 获取到的 Bean 对象并不是 FactoryBean 的实现类对象 , ?是这个实现类中的 getObject()?法返回的对象 。要想获取 FactoryBean 的实现类,就要getBean(&BeanName),在 BeanName 之前加上&.
在该接?中还定义了以下3个?法:
TgetObject():返回由FactoryBean创建的Bean实例,如果isSingleton()返回true,则该实例会放到Spring容器中单实例缓存池中;booleanisSingleton():返回由FactoryBean创建的Bean实例的作?域是singleton还是prototype;ClassgetObjectType():返回FactoryBean创建的Bean类型 。总结BeanFactory 是个 Factory,也就是IOC容器或对象??,FactoryBean 是个 Bean 。在 Spring 中,所有的 Bean 都是由 BeanFactory(也就是IOC容器)来进?管理的 。但对 FactoryBean?? , 这个 Bean 不是简单的 Bean ,?是?个能?产或者修饰对象?成的?? Bean,它的实现与设计模式中的??模式和修饰器模式类似 。




推荐阅读