一、BeanFactory与FactoryBean分别是什么
1.BeanFatory:
-
BeanFactory是个Factory,也就是IOC容器或对象工厂。所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。
我们经常用到的是ApplicationContext 接口也是继承BeanFactory的。
spring不允许我们直接操作 BeanFactory bean工厂,所以为我们提供了ApplicationContext 这个接口继承BeanFactory 接口,ApplicationContext包含BeanFactory的所有功能,同时还进行更多的扩展。
2.FatoryBean:
- FactoryBean是个Bean。这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似 。
FactoryBean 接口提供三个方法,用来创建对象
public interface FactoryBean<T> {
//创建的具体bean对象时的类型
@Nullable
T getObject() throws Exception;
//具体创建具体对象是由此getObject()方法来返回的
@Nullable
Class<?> getObjectType();
//是否是单例
default boolean isSingleton() {
return true;
}
}
二、BeanFactory与FactoryBean的区别
1.BeanFactory与FactoryBean都是接口。
2.BeanFactory是个bean 工厂, 它负责生产和管理bean的一个工厂是ioc 容器最底层的接口,是个ioc容器,是spring用来管理和装配普通bean的ioc容器(这些bean成为普通bean)。
3.FactoryBean是个bean,在IOC容器的基础上给Bean的实现加上了一个简单工厂模式和装饰模式,是一个可以生产对象和装饰对象的工厂bean,由spring管理后,生产的对象是由getObject()方法决定的
更多内容:
Spring篇(1)--SpringBoot是什么?原理是怎么样的?
Spring篇(4-1)--Spring Bean 是什么及其生命周期阶段