iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Spring BeanFactory与FactoryBean的区别是什么
  • 768
分享到

Spring BeanFactory与FactoryBean的区别是什么

2023-06-30 12:06:44 768人浏览 八月长安
摘要

这篇文章主要介绍了spring BeanFactory与FactoryBean的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring BeanFactory与FactoryB

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

    前言:

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

    区别和联系

    BeanFactory

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

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

    Spring BeanFactory与FactoryBean的区别是什么

    以下为 BeanFactory 接口生命周期相关的一下方法,在项目开发中,ApplicationContextAwareInitializingBean 和 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 本身,那么需要添加 & 符号作为前缀进行处理。

    Spring BeanFactory与FactoryBean的区别是什么

    FactoryBean

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

    Spring BeanFactory与FactoryBean的区别是什么

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

    --结束END--

    本文标题: Spring BeanFactory与FactoryBean的区别是什么

    本文链接: https://www.lsjlt.com/news/328660.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Spring BeanFactory与FactoryBean的区别是什么
      这篇文章主要介绍了Spring BeanFactory与FactoryBean的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring BeanFactory与FactoryB...
      99+
      2023-06-30
    • Spring BeanFactory 与 FactoryBean 的区别详情
      目录区别和联系BeanFactoryFactoryBean总结前言: 在 Spring 中, IOC 是很重要的概念,其本质就是 map 结构...
      99+
      2022-11-13
    • Spring中BeanFactory FactoryBean和ObjectFactory的三种的区别
      目录Spring中BeanFactory FactoryBean和ObjectFactory的三种的区别引言结论BeanFactoryFactoryBeanObjectFactory...
      99+
      2023-01-17
      BeanFactory FactoryBean和ObjectFactory区别 BeanFactory和ObjectFactory区别 FactoryBean 和 ObjectFactory
    • Spring与Spring Boot核心区别是什么
      本篇内容介绍了“Spring与Spring Boot核心区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是Spring作为 Ja...
      99+
      2023-06-16
    • spring-data-jpa中findOne与getOne的区别是什么
      本篇内容主要讲解“spring-data-jpa中findOne与getOne的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“spring-data-jpa中findOne与getOn...
      99+
      2023-06-21
    • Spring的@Autowired与@Resource有什么区别
      今天小编给大家分享一下Spring的@Autowired与@Resource有什么区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
      99+
      2023-06-29
    • Spring和SpringBoot的区别是什么
      今天小编给大家分享一下Spring和SpringBoot的区别是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、看一下...
      99+
      2023-06-27
    • Spring Boot配置文件bootstrap与application的区别是什么
      这篇文章主要介绍“Spring Boot配置文件bootstrap与application的区别是什么”,在日常操作中,相信很多人在Spring Boot配置文件bootstrap与application的区别是什么问题上存在疑惑,小编查阅...
      99+
      2023-06-19
    • JSF与Struts的区别是什么
      本篇内容介绍了“JSF与Struts的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JSF与Struts的异同  Struts和J...
      99+
      2023-06-03
    • Mybatis与Hibernate的区别是什么
      Mybatis与Hibernate的区别是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. hibernate是全自动,而mybatis是半自动hibernate完全可以...
      99+
      2023-05-30
      mybatis hibernate
    • tf.nn.conv2d与tf.layers.conv2d的区别是什么
      这篇文章主要讲解了“tf.nn.conv2d与tf.layers.conv2d的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“tf.nn.conv2d与tf.layers.conv...
      99+
      2023-07-05
    • string与stringbuilder的区别是什么
      string是不可变的字符串,而stringbuilder是可变的字符串。在使用string时,每次对字符串的修改都会创建一个新的字...
      99+
      2023-08-15
      string stringbuilder
    • web与php的区别是什么
      本教程操作环境:windows10系统、PHP7.1版,DELL G3电脑。web与php的区别是什么一个后端,一个前端,这就是最大区别。详细点的话,可以这么说:功能不一样,php主要用于后端处理数据和操作数据,增删改查。而web前端所包括...
      99+
      2016-02-02
      PHP
    • php7与php5的区别是什么
      本文操作环境:windows10系统、php 7&&php 5、thinkpad t480电脑。相信一定有很多小伙伴都有过这样的疑惑,php5和php7之间有什么区别么?php7想对于php5增加或删除了哪些东西?下面我就来...
      99+
      2020-09-07
      php 7 php 5 区别
    • html与java的区别是什么?
      html与java的区别两者本质不一样。Java是一种面向对象编程语言,像C、Basic一样,但各有各的特点。java是一门程序语言,具有众多优点,它是可以编写网页的;但那个语言叫JSP,JSP语言是JAVA程序语言的一种技术。【推荐学习:...
      99+
      2014-10-09
      java基础 html java
    • wordpress与PHP的区别是什么
      本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑wordpress是什么WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPres...
      99+
      2020-08-18
      wordpress PHP
    • php与ruby的区别是什么
      本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑。php与ruby的区别是什么Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。php和ruby...
      99+
      2021-05-03
      php
    • php与vb的区别是什么
      本教程操作环境:windows10系统、PHP7.1版、DELL G3电脑php与vb的区别是什么PHP即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。Visual Basic(简称VB)是Micr...
      99+
      2017-05-19
      PHP
    • access与mysql的区别是什么
      这篇文章主要介绍了access与mysql的区别是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。access与mysql的区别:(1)Mys...
      99+
      2022-10-18
    • SQL与PLSQL的区别是什么
      这篇文章主要介绍SQL与PLSQL的区别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!结构化查询语言(SQL)是一种标准的数据库语言,用于创建,维护和检索关系数据库。SQL的优...
      99+
      2022-10-18
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作