嗨大家好呀,我是小米,一个喜欢边学边分享,把坑踩过一遍再告诉你怎么绕开的技术宅控!
最近我在准备换工作的社招面试(真是社畜中的社畜啊……),被问了一个超级经典但又能坑死人的问题:
Spring MVC 的控制器(Controller)是单例的吗?如果是,会有什么问题?怎么解决?
听到这个问题那一刻,我表面微笑,内心咯噔:
“完了,要是答得不清不楚,面试官又要画叉叉了……”
好在我之前踩过这个坑,一口气讲了个通透,还得到了面试官的点赞!
今天我就把完整的故事和解题思路分享给大家。
拿好小板凳,咱们从头讲起!
记忆中的第一个坑:Controller 的单例本质!
记得我刚学 Spring MVC 的时候,脑子里想当然觉得:
“控制器嘛,就是处理一个请求,创建一个对象,处理完就丢掉,多清晰!”
结果呢?查源码一看,啪啪打脸!
实际上,Spring MVC 默认把 Controller 当作单例(Singleton)来管理的!
也就是说,咱们写的这个:
默认是单例模式(Singleton Scope),由 Spring 容器托管