首页 > 其他分享 >FactoryBean(利用工厂制造复杂的bean)

FactoryBean(利用工厂制造复杂的bean)

时间:2024-10-16 19:22:02浏览次数:8  
标签:容器 生命周期 对象 Spring 工厂 bean FactoryBean 单例

可以说 FactoryBean 创建的对象的生命周期管理取决于其是否为单例对象以及是否实现了特定的生命周期管理接口。对于单例对象,生命周期由 Spring 容器管理;而对于多例对象,生命周期由 Java 虚拟机管理。

容器仅负责管理 FactoryBean 实例的生命周期,而不负责 FactoryBean 所创建对象的生命周期。因此,不会自动调用暴露的 bean 对象(例如Closeable.close())上的 destroy 方法

单例(Singleton)对象的生命周期

如果 FactoryBeanisSingleton() 方法返回 true,那么它创建的对象将作为单例对象被管理。单例对象的生命周期如下:

  1. 创建:当第一次请求该对象时,Spring 容器会调用 FactoryBean.getObject() 方法来创建对象,并将其存储在缓存中。
  2. 存活:只要 Spring 容器还存在,单例对象就会一直存在于容器中,每次请求该对象时都会返回同一个实例。
  3. 销毁:当 Spring 容器关闭时,单例对象的生命周期结束。此时,如果对象实现了 DisposableBean 接口,Spring 容器会调用该对象的 destroy() 方法来进行清理工作。

多例(Prototype)对象的生命周期

如果 FactoryBeanisSingleton() 方法返回 false,那么它创建的对象将作为多例对象被管理。多例对象的生命周期如下:

  1. 创建:每次请求该对象时,Spring 容器都会调用 FactoryBean.getObject() 方法来创建一个新的对象实例。
  2. 存活:多例对象的生命周期仅在创建后持续到当前请求结束或当前线程执行完毕。
  3. 销毁:多例对象没有统一的销毁时机,因为它们是每次请求时重新创建的。当对象不再被使用时,垃圾回收机制会自动回收这些对象。

1.FactoryBean中的getObject方法(此方法给容器中制造对象)

FactoryBean在容器中放的组件的类型,是接口中泛型指定的类型,组件的名字是工厂自己的名字

2.FactoryBean中的getObjectType方法(此方法用来说明造的东西的类型)

FactoryBean 创建出来的 Bean 的类型是由 FactoryBeangetObjectType() 方法决定的

3.FactoryBean中的isSingleton方法(是否为单例)

标签:容器,生命周期,对象,Spring,工厂,bean,FactoryBean,单例
From: https://blog.csdn.net/m0_73901607/article/details/142987123

相关文章

  • bean 生命周期
    生命周期实例化:通过反射调用构造方法创建Bean实例属性赋值:把配置文件的值或IOC容器中的其他bean注入属性中初始化:bean进入初始化阶段,spring提供了3种方式对bean加工处理@PostConstruct注解指定初始化方法实现InitializingBean接口,复写afterPropertiesSet......
  • spring上 -基于注解配置bean,动态代理,AOP笔记
     用的是jdk8,spring框架里jar包的下载可以自己搜到注解用到的jar包。  60,注解配置Bean快速入门 基本介绍 代码结构: UserDao.javapackagecom.hspedu.spring.component;importorg.springframework.stereotype.Repository;/**使用@Repository标识该......
  • 智能工厂的软件设计 “原力”和“新生力量” 之1
    本文要点本篇“智能工厂的设计软件”中的双重客体“程序Program”(姑且认为是模拟人工智能-一具体问题域具体分析得到的单个实体)的天生“原力”(对AI的初始假设)的认识以及出生后这些“原力”如何以及怎样更新(假设检验--一个给定组织中的集体)并生成“新生力量”(智能增强-......
  • 智能工厂的软件设计 “原力”和“新生力量” 之2
    (修改了1中的部分文字,还增加了部分内容。重新讨论)Q9、本篇“智能工厂的设计软件”中的双重客体“程序Program”(姑且认为是模拟人工智能-一具体问题域具体分析得到的单个实体)的天生“原力”(对AI的初始假设)的认识以及出生后这些“原力”如何以及怎样更新(假设检验--一个给定......
  • 13.3寸工业三防平板数字化工厂产线数采手持终端
    在数字化工厂的建设浪潮中,高效可靠的数据采集终端至关重要。尤其在水处理、食品加工等特殊工业环境下,设备的耐用性和数据安全性面临严峻挑战。传统的平板电脑难以应对复杂的工业现场,而一款性能卓越、坚固耐用的工业三防平板则成为提升生产效率和数据准确性的关键。这款13.3寸......
  • 注塑机接插件航空插头工厂数据采集产量监控系统
    测试机柜温湿度01.温度7dp8dp测试机柜温湿度01.湿度压接计数器02.产量计数测试机柜温湿度02.温度测试机柜温湿度02.湿度3eftkf压接计数器03.产量计数压接计数器01.产量计数压接计数器04.产量计数200121压接计数器05.产量计数5gd1qg海天温湿度.温度6h0c2l海天温湿度.湿度3......
  • DIY必备技能:如何用格式工厂将图片转换成PDF文档
    我们经常需要将各种格式的文件转换为更便于分享和存档的形式,PDF便是其中一种极为流行的文件格式。无论是学术论文、工作报告还是个人简历,PDF都能够确保文档的外观和排版在任何设备上都保持一致。对于经常需要处理图片资料的用户来说,将图片转换为PDF格式不仅便于存储管理,还能更......
  • 传统制造业工厂如何实施数字化转型和智能化
    传统制造业工厂实施数字化转型和智能化是一个系统性工程,涉及多个方面和步骤。以下是一些关键的实施策略: 一、明确数字化转型的目标和愿景首先,企业需要明确数字化转型的目标和愿景,包括提高生产效率、降低运营成本、优化产品质量、增强市场竞争力等。这些目标和愿景应与企业......
  • SpringBoot基础(四):bean的多种加载方式
    SpringBoot基础系列文章SpringBoot基础(一):快速入门SpringBoot基础(二):配置文件详解SpringBoot基础(三):Logback日志SpringBoot基础(四):bean的多种加载方式目录一、xml配置文件二、注解定义bean1、使用AnnotationConfigApplicationContext对象加载2、加载本地类3、......
  • 工厂机械臂人员闯入自动预警系统
    工厂机械臂人员闯入自动预警系统基于AI视觉图像识别算法,工厂机械臂人员闯入自动预警系统通过实时监测工作区域内的人员位置和机械臂设备的运行状态,实现对人员闯入的识别和预警。一旦系统检测到人员闯入作业区域,立即发出警报并同步停止机械臂设备的工作,以避免发生意外。工厂机械臂......