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

相关推荐
SimonKing几秒前
吊打面试官系列:BeanFactory和FactoryBean的区别
java·后端·面试
江湖十年10 分钟前
一行命令统计代码行数
后端·go·命令行
天天摸鱼的java工程师13 分钟前
互联网行业能力解刨:从Java后端八年开发经验看
前端·后端·程序员
FlyingBird~18 分钟前
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
java·javascript·typescript
brzhang20 分钟前
Android 16 卫星连接 API 来了,带你写出「永不失联」的应用
前端·后端·架构
程序员爱钓鱼28 分钟前
Go并发模型与模式:context 上下文控制
后端·google·go
神仙别闹1 小时前
基于Java+VUE+MariaDB实现(Web)仿小米商城
java·前端·vue.js
AI小智1 小时前
AI提效99.5%!英国政府联手 Gemini,破解城市规划审批困局
后端
风象南1 小时前
SpringBoot的4种抽奖活动实现策略
java·spring boot·后端
蓝桉~MLGT1 小时前
java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java·开发语言·python