Spring的FactoryBean多例问题

关于spring bean,我们了解的最多的还是单例,而多例bean,除了平时我们自己new的那些多实例外(但不属于IOC管理了),几乎很少能用到,而在spring 层面,FactoryBean刚好是多例的一个体现,在spring集成第三方框架时,往往能看到FactoryBean的身影。

FactoryBean默认创建是多例的,这里以mybatis的Mapper接口为例,fanfouMapper和demoMapper两者对应的MapperFactoryBean不是同一个实例,如下图:

原因也很简单,因为我们获取 FactoryBean是通过其getObject方法,而该方法依赖我们具体需要产生代理的接口,如果 FactoryBean是单例,那么所有Mapper都是一样了,肯定不行:

上面说的 FactoryBean是多例,主要是指MapperFactoryBean是多例即FactoryBean的实现类是多例。至于getObject返回的bean是不是多例,这个看具体实现,拿mybatis来讲,也是多例,每次都会创建新的MapProxy对象:

相关推荐
源代码•宸1 小时前
分布式缓存-GO(分布式算法之一致性哈希、缓存对外服务化)
开发语言·经验分享·分布式·后端·算法·缓存·golang
It's now1 小时前
Spring AI 基础开发流程
java·人工智能·后端·spring
cxh_陈1 小时前
线程的状态,以及和锁有什么关系
java·线程·线程的状态·线程和锁
计算机毕设VX:Fegn08951 小时前
计算机毕业设计|基于springboot + vue图书商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
R.lin1 小时前
Java 8日期时间API完全指南
java·开发语言·python
毕设源码-赖学姐1 小时前
【开题答辩全过程】以 高校教学质量监控平台为例,包含答辩的问题和答案
java·eclipse
高山上有一只小老虎2 小时前
翻之矩阵中的行
java·算法
火钳游侠2 小时前
java单行注释,多行注释,文档注释
java·开发语言
code bean2 小时前
【CMake】为什么需要清理 CMake 缓存文件?深入理解 CMake 生成器切换机制
java·spring·缓存
selt7912 小时前
Redisson之RedissonLock源码完全解析
android·java·javascript