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对象:

相关推荐
码农小灰2 分钟前
Kafka消息持久化机制全解析:存储原理与实战场景
java·分布式·kafka
程序员鱼皮1 小时前
太香了!我连夜给项目加上了这套 Java 监控系统
java·前端·程序员
笃行3501 小时前
从零开始:SpringBoot + MyBatis + KingbaseES 实现CRUD操作(超详细入门指南)
后端
该用户已不存在2 小时前
这几款Rust工具,开发体验直线上升
前端·后端·rust
用户8356290780512 小时前
C# 从 PDF 提取图片教程
后端·c#
L2ncE2 小时前
高并发场景数据与一致性的简单思考
java·后端·架构
武昌库里写JAVA2 小时前
使用 Java 开发 Android 应用:Kotlin 与 Java 的混合编程
java·vue.js·spring boot·sql·学习
小指纹2 小时前
河南萌新联赛2025第(六)场:郑州大学
java·开发语言·数据结构·c++·算法
叶~璃2 小时前
云计算:企业数字化转型的核心引擎
java
码luffyliu2 小时前
MySQL:MVCC机制及其在Java秋招中的高频考点
java·数据库·mysql·事务·并发·mvcc