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 小时前
Java Redis “持久化”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
聪明的笨猪猪2 小时前
Java Redis “核心基础”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
稚辉君.MCA_P8_Java4 小时前
JVM第二课:一文讲透运行时数据区
jvm·数据库·后端·容器
奋斗的小monkey4 小时前
Spring Boot 3.x核心特性与性能优化实战
java·spring boot·微服务·性能优化·响应式编程
程序猿DD5 小时前
将 GPU 级性能带到企业级 Java:CUDA 集成实用指南
java·架构
一成码农5 小时前
JavaSE面向对象(上)
java
qq_574656255 小时前
java-代码随想录第66天|Floyd 算法、A * 算法精讲 (A star算法)
java·算法·leetcode·图论
我是好小孩5 小时前
【Android】六大设计原则
android·java·运维·服务器·设计模式
小霞在敲代码5 小时前
HashMap - 底层原理
java·hashmap