Spring极简入门教程4:Bean创建核心接口(BeanFactory\FactoryBean)

本文是Spring极简入门教程的一部分,主要讲解BeanFactory和FactoryBean这两个核心接口。BeanFactory作为IOC容器的核心接口,负责管理和实例化bean。而FactoryBean则允许自定义bean的实例化过程,提供了一种灵活的增强机制。两者之间的区别在于,BeanFactory是IOC容器的基础,而FactoryBean是bean实现的工厂,可以结合工厂模式和装饰模式来生成对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本节主要对Bean创建核心接口进行说明

BeanFactory

职责:
负责生产和管理bean的一个简单工厂接口,是IOC容器的核心接口。
用于实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。

BeanFactory提供IOC容器规范,是原始接口,一般不再使用。
而是使用其派生接口ApplicationContext的实现类管理IOC容器。
相对于BeanFactory,其实现了其他接口功能:

接口说明具体使用
EnvironmentCapable获取上下环境对象https://blog.csdn.net/u010900754/article/details/101784606
HierarchicalBeanFactory提供父工厂的访问功能https://blog.csdn.net/iteye_14104/article/details/82672514
MessageSource国际化消息支持https://blog.csdn.net/u010900754/article/details/101649482
ApplicationEventPublisher事件传播机制https://blog.csdn.net/u010900754/article/details/101479940
ResourcePatternResolver用于解析资源文件(通配符解析)https://blog.csdn.net/weixin_39165515/article/details/77073612

ApplicationContext主要实现类

  1. 注解方式: AnnotationConfigApplicationContext
  2. xml配置方式:
    ClassPathResourceClassPathXmlApplicationContextFileSystemXmlApplicationContext

FactoryBean

FactoryBean是一个提供定制实例化规范的接口。
主要对bean对象生成时进行拦截、代理、自定义属性赋值等方式增强实现,能够以简单工厂模式或装饰者模式生成工厂bean。

一般情况下,Spring通过反射机制利用的class属性指定实现类实例化Bean。
在某些情况下,实例化Bean过程比较复杂,如果按照传统的方式,则需要在中配置大量信息,配置方式的灵活性是受限的。
此时若采用编码的方式可能会得到一个简单的方案。而FactoryBean能够通过反射获取bean进行自定义属性赋值。

BeanFactory和FactoryBean的区别

BeanFactory,提供了IOC容器最基本的实现规范。
FactoryBean,提供了灵活方式进行bean实现化。
FactoryBean在IOC容器的基础上给Bean的实现加上了一个简单工厂模式和装饰模式,我们可以在getObject()方法中灵活配置。

区别:
BeanFactory是个Factory,也就是IOC容器或对象工厂,FactoryBean是个Bean。在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似。

附录:

  1. Spring 的 BeanFactory 和 FactoryBean 傻傻分不清?
  2. Spring源码解析 - BeanFactory接口体系解读
  3. Spring5源码浅析(二)—ListableBeanFactory与HierarchicalBeanFactory
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值