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

可以说 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方法(是否为单例)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值