千家信息网

Spring BeanFactory与FactoryBean的区别是什么

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了Spring BeanFactory与FactoryBean的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring BeanFactor
千家信息网最后更新 2026年11月02日Spring BeanFactory与FactoryBean的区别是什么

这篇文章主要介绍了Spring BeanFactory与FactoryBean的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring BeanFactory与FactoryBean的区别是什么文章都会有所收获,下面我们一起来看看吧。

    前言:

    在 Spring 中, IOC 是很重要的概念,其本质就是 map 结构,存储容器和业务 Bean 信息。但是 BeanFactory 和 FactoryBean 的区别却是一个很重要的知识点,在本文中将结合源码进行分析讲解。

    区别和联系

    BeanFactory

    在 Spring 中,所有的 Bean 都是由 BeanFactory (也就是 IOC 容器)来进行管理的。BeanFactory 定义了容器的基本形式,并规定了 IOC 容器的基本接口以及生命周期,针对 BeanFactory 的实现类也有很多,比如ApplicationContext、DefaultListableBeanFactory、XmlBeanFactory 都是其添加了附加功能的接口。BeanFactory 创建的 Bean 对象需要遵循以下的生命周期形式,并且 Bean 的生产都是通过反射机制来实现的。

    在英文中,Aware 是意识的意思,可以看到 BeanFactory 的生命周期流程包含了诸多的 Aware 接口:

    以下为 BeanFactory 接口生命周期相关的一下方法,在项目开发中,ApplicationContextAware、InitializingBean 和 DisposableBean 有这广泛的应用。

    • BeanNameAware.setBeanName 用于设置 Bean 的名称

    • BeanClassLoaderAware.setBeanClassLoader 设置类加载器

    • BeanFactoryAware.setBeanFactory 设置 bean 工厂

    • ResourceLoaderAware.setResourceLoader 设置资源加载器

    • ApplicationEventPublisherAware.setApplicationEventPublisher 设置事件发布器

    • MessageSourceAware.setMessageSource 设置信息资源

    • ApplicationContextAware.setApplicationContext 设置应用上下文

    • ServletContextAware.setServletContext 设置 Servlet 上下文

    • BeanPostProcessor.postProcessBeforeInitialization 前置处理器

    • InitializingBean.afterPropertiesSet Bean 初始化操作

    • RootBeanDefinition.getInitMethodName 设置Bean 的初始化方法名称

    • BeanPostProcessor.postProcessAfterInitialization 后置处理器

    • DisposableBean.destroy 设置 Bean 销毁

    • RootBeanDefinition.getDestroyMethodName 获取 Bean 销毁的方法

    默认情况下,如果直接调用 getBean 方法,将会返回一个工厂创造的对象,如果想获取 Bean 本身,那么需要添加 & 符号作为前缀进行处理。

    FactoryBean

    但是在某些具体的情况下,实例化 Bean 的操作会很复杂,按照其要求需要配置大量的属性,此时 Bean 的配置灵活性就受到了限制,此时就需要使用到 FactoryBean 了,该接口可以按照用户的需求来构造 Bean 对象,而不再遵守 Bean 生命周期的流程。Spring 自身就提供了很多 FactoryBean 的实现, 它们隐藏了实例化的一系列复杂细节,给上层应用带来了便利。自从 Srping3.0 开始 FactoryBean 开始支持泛型,即接口声明改为 FactoryBean 的形式,在 FactoryBean 的应用中,SqlSessionFactoryBean 就是很好的实践,在操作数据库的过程中,提供了创建 SqlSession 的工厂 Factory。

    关于"Spring BeanFactory与FactoryBean的区别是什么"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Spring BeanFactory与FactoryBean的区别是什么"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

    接口 周期 生命 容器 方法 知识 应用 对象 工厂 形式 处理 复杂 重要 上下 上下文 信息 内容 名称 处理器 实例 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 保险科技 互联网保险 互联网科技公司经营范围 互联网属科技 疫情对互联网科技公司影响 北京互联网科技有限公司 远信互联网科技 南京欣网互联网科技 互联网科技logo设计 长亮科技 互联网金融 互联网科技公司需要的职位 银川新华互联网科技职业技术培训学校图片 阿里互联网科技公司 互联网科技项目计划书材料类 全球顶尖互联网科技公司 健康食品互联网创新科技园项目 迪庆互联网科技招生 特约风豹互联网科技为什么扣费 有人说阿里系是互联网科技企业 互联网科技包装股份有限公司上市 银川新华互联网科技学校原画 互联网科技公司经营范围 中国互联网科技工作委员会毛军 互联网科技资迅 智慧科技互联网 广州善班互联网科技 湖南诚度互联网科技有限公司 互联网行业科技股 工业互联网展湾科技股份有限公司 南通创西澳互联网科技有限公司 上海互联网科技公司ppt
    0