Spring中@Bean和FactoryBean作用和区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring中@Bean和FactoryBean作用和区别相关的知识,希望对你有一定的参考价值。

参考技术A FactoryBean并不是简单的@Bean 

一般情况下,Spring通过反射机制利用的class属性指定实现类实例化Bean,在某些情况下,实例化Bean过程比较复杂,如果按照传统的方式,则需要在中提供大量的配置信息。配置方式的灵活性是受限的,这时采用编码的方式可能会得到一个简单的方案。Spring为此提供了一个org.springframework.bean.factory.FactoryBean的工厂类接口,用户可以通过实现该接口定制实例化Bean的逻辑。FactoryBean接口对于Spring框架来说占用重要的地位,Spring自身就提供了70多个FactoryBean的实现。它们隐藏了实例化一些复杂Bean的细节,给上层应用带来了便利。从Spring3.0开始,FactoryBean开始支持泛型,即接口声明改为FactoryBean<T>的形式

FactoryBean底层Java8实现两个方法:

@Override public Object getObject() throwsException

     logger.debug("getObject......");

     returnproxyObj;

 @Override public ClassgetObjectType()

         return proxyObj == null ? Object.class : proxyObj.getClass();

   

FactoryBean是个接口,可以实例化两个对象,当在IOC容器中的Bean实现了FactoryBean后,通过getBean(String BeanName)获取到的Bean对象并不是FactoryBean的实现类对象,而是这个实现类中的getObject()方法返回的对象。要想获取FactoryBean的实现类,就要getBean(&BeanName),在BeanName之前加上&。

以上是关于Spring中@Bean和FactoryBean作用和区别的主要内容,如果未能解决你的问题,请参考以下文章

Spring5学习笔记 — “工厂Bean(FactoryBean)”

Spring中Bean的配置方式之FactoryBean

Spring配置bean的方法(工厂方法和Factorybean)

Spring FactoryBean用法

Spring中FactoryBean的作用和实现原理

Spring之FactoryBean