精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

99%的人都答錯了!Spring MVC 控制器到底是不是單例?怎么破局?

開發 前端
如果每來一個請求就 new 一個 Controller,想想服務器內存得爆炸成啥樣子?而且 Controller 通常是無狀態的(處理邏輯、調用 Service),并不需要為每次請求新建實例。

引言

嗨大家好呀,我是小米,一個喜歡邊學邊分享,把坑踩過一遍再告訴你怎么繞開的技術宅控!

最近我在準備換工作的社招面試,被問了一個超級經典但又能坑死人的問題:

Spring MVC 的控制器(Controller)是單例的嗎?如果是,會有什么問題?怎么解決?

聽到這個問題那一刻,我表面微笑,內心咯噔:

“完了,要是答得不清不楚,面試官又要畫叉叉了……”

好在我之前踩過這個坑,一口氣講了個通透,還得到了面試官的點贊!

今天我就把完整的故事和解題思路分享給大家。

記憶中的第一個坑:Controller 的單例本質!

記得我剛學 Spring MVC 的時候,腦子里想當然覺得:

“控制器嘛,就是處理一個請求,創建一個對象,處理完就丟掉,多清晰!”

結果呢?查源碼一看,啪啪打臉!

實際上,Spring MVC 默認把 Controller 當作單例(Singleton)來管理的!

也就是說,咱們寫的這個:

圖片圖片

默認是單例模式(Singleton Scope),由 Spring 容器托管,啟動時創建一個實例,整個應用生命周期共用這一份!

所以,記住一句話:

Spring 中的 @Controller 本質上是一個單例 Bean!

那為啥 Spring 要這么搞呢?

其實很簡單,節省資源,提高性能!

如果每來一個請求就 new 一個 Controller,想想服務器內存得爆炸成啥樣子?而且 Controller 通常是無狀態的(處理邏輯、調用 Service),并不需要為每次請求新建實例。

所以,單例是合理的默認選擇!

但是——

事情到這里,才剛剛開始。

單例帶來的隱患:線程安全問題!

單例 + 多線程,聽著就危險,對吧?

沒錯,Controller 是單例,但是 用戶請求是多線程并發的。

一旦 Controller 里寫了成員變量,而且這個成員變量又是可變的、共享的,那簡直是災難現場!

比如:

圖片圖片

看著沒啥問題對吧?

但是注意啊!

  • 用戶A提交了一個orderId:1001
  • 用戶B緊接著提交了一個orderId:1002
  • 因為Controller是單例的,他們共用同一個 lastOrderId!

結果:

A本來想處理自己提交的1001,結果處理到一半,lastOrderId 被 B 改成了1002……

數據錯亂、請求串臺、詭異Bug,分分鐘爆炸!

這就是典型的線程安全問題!

總結一下:

Spring MVC Controller 單例本身沒問題,問題在于如果 Controller 里保存了【有狀態的可變成員變量】,就會引發線程安全問題!

面試官想聽的:怎么解決?

好,既然知道問題了,那接下來最重要的就是——怎么解決?

思路一:保證 Controller 無狀態

  • 不要在 Controller 里寫可變的成員變量!
  • 所有數據都通過方法參數傳遞。

比如剛才的 lastOrderId,正確寫法應該是:

圖片圖片

這樣,每個請求進來,拿的是自己方法參數里的數據,不會互相污染。

記住一句話:

Controller 要像一潭死水一樣冷靜,不要有變化,保持無狀態!

思路二:必要時改變作用域

如果業務場景確實需要保存一些請求級別的數據,比如一步步流程操作,那么可以考慮改變 Bean 的作用域!

  • 使用 @Scope("request")
  • 讓每個請求有自己的 Controller 實例。

比如:

圖片圖片

加上 @Scope("request"),

Spring 會給每個請求創建一個新的 Controller 實例,互不影響!

當然啦,這樣就失去了單例帶來的性能優勢了,要慎重選擇。

大部分場景下,通過方法參數傳遞就夠了,很少需要改變作用域。

思路三:使用 ThreadLocal

如果真的需要存 per-request 數據,還可以用ThreadLocal。

圖片圖片

ThreadLocal 保證每個線程有獨立副本,互不干擾。

注意,用完一定要 remove()!不然可能會導致內存泄漏,尤其是在線程池環境下。

小米的社招總結答法(親測有效)

最后,總結一下,社招面試我怎么答的:

面試官問:“Spring MVC 控制器是單例的嗎?如果是,有什么問題?怎么解決?”

我答:

  • Spring MVC 的控制器默認是單例的,由 Spring 容器管理。
  • 單例本身沒問題,但如果 Controller 里存在可變的成員變量,在多線程并發請求下會引發線程安全問題。
  • 解決辦法有:
  • 或者使用 ThreadLocal 保存每個請求的獨立數據,但注意清理。
  • 必要時可以將 Controller 設為請求作用域(@Scope("request"));
  • 最推薦:保持 Controller 無狀態,只通過方法參數傳遞數據;

面試官點頭微笑,

我心里一陣狂喜,暗搓搓給自己比了個??。

總結一下今天的故事

今天我們講了:

  • Spring MVC 控制器是默認單例的(Singleton Scope);
  • 單例會引發線程安全問題(成員變量共享導致數據錯亂);
  • 最好保持 Controller 無狀態;
  • 特殊場景下可以使用 @Scope("request") 或 ThreadLocal;

關鍵思路:

  • Controller 要無狀態,數據傳參走,線程安全穩如老狗!
責任編輯:武曉燕 來源: 軟件求生
相關推薦

2024-05-07 13:29:00

CSS選擇器權重

2019-06-06 08:30:07

區塊鏈數字貨幣比特幣

2012-07-02 09:40:45

小米手機

2020-02-25 16:30:36

MD5是不是加密

2021-01-11 05:37:54

倉儲模式接口

2016-09-23 15:10:10

HTTPGETPOST

2024-07-05 09:00:00

編程語言Rust開發

2019-02-27 09:28:15

Redis服務器事務

2019-05-15 16:15:08

HTTPGETPOST

2024-09-04 01:36:51

Java對象傳遞

2011-03-08 08:58:37

springmvc

2021-08-02 14:48:15

云電腦Windows 365華為

2025-03-11 08:20:00

C++main函數

2016-12-23 09:04:56

大數據技術BAT

2022-08-04 08:23:13

顯示器色域參數

2019-12-16 09:42:38

PHP語言程序員

2009-01-12 11:16:58

控制器控制器行為行為結果

2025-05-12 04:00:00

2023-10-12 08:54:20

Spring事務設置

2021-04-13 10:35:13

網盤存儲硬盤
點贊
收藏

51CTO技術棧公眾號

国产成人免费视| 91影院成人| 狠狠躁18三区二区一区| 欧美极品色图| 中文av免费观看| 亚洲国产精品成人| 亚洲黄页视频免费观看| 少妇高清精品毛片在线视频| 番号在线播放| 国产伦精品一区二区三区免费| 久久久久国产精品www| 亚洲av无码一区二区三区观看| 怡红院成人在线| 亚洲日本一区二区| 免费国产在线精品一区二区三区| 中文字幕你懂的| 欧美三区视频| 国产香蕉精品视频一区二区三区| 91aaa精品| 美女扒开腿让男人桶爽久久软| 国产精品入口麻豆九色| 国产成人一区二区三区免费看| 在线永久看片免费的视频| 一区二区三区网站| 亚洲美女视频网| 两性午夜免费视频| 日韩av超清在线观看| 亚洲一区二区三区三| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | www.国产区| 最新av在线播放| 国产三级精品三级在线专区| 国产成人成网站在线播放青青| 少妇又紧又色又爽又刺激视频 | 成人精品视频一区二区三区尤物| 国产精品99蜜臀久久不卡二区| 青青操国产视频| 日韩精品影视| 亚洲欧美在线看| av天堂一区二区| 国产精品视频一区二区三区| 在线免费一区三区| 亚洲美免无码中文字幕在线 | 懂色av一区二区三区蜜臀| 国产精品小说在线| 午夜精品免费观看| 亚洲一区二区三区高清| 欧美精品videossex性护士| 男人晚上看的视频| 欧美日韩在线二区| 国产亚洲精品va在线观看| 日本护士做爰视频| 久久影视三级福利片| 日韩免费视频一区| 国产chinesehd精品露脸| www欧美在线观看| 欧美日韩综合色| 国产精品入口免费软件| 在线一区av| 都市激情亚洲色图| 日本中文字幕片| 在线观看福利电影| 欧美午夜视频在线观看| 97在线免费公开视频| 桃花岛成人影院| 色婷婷香蕉在线一区二区| 日本一本二本在线观看| 中文在线免费二区三区| 婷婷久久综合九色国产成人| 日韩国产欧美亚洲| 久热在线观看视频| 欧美性开放视频| 日本三级免费观看| 成人在线免费av| 欧美男人的天堂一二区| 99视频在线观看视频| aiai久久| 亚洲免费电影一区| 污污视频网站在线免费观看| 久久精品亚洲人成影院 | 欧美日韩精品三区| 在线观看免费av网址| 久久丁香四色| 亚洲国产精品大全| 偷拍夫妻性生活| 99免费精品| 欧美激情视频一区二区| 国产乡下妇女做爰视频| 久久狠狠婷婷| 91精品久久久久久久久久久久久| 国产黄色片免费| 不卡区在线中文字幕| 日本婷婷久久久久久久久一区二区 | 亚洲激情视频小说| 五月天久久网站| 欧美精品999| 中文字幕69页| 国产原创一区二区| 极品日韩久久| 最新国产在线观看| 亚洲一区二区三区四区在线免费观看| 日本三级免费网站| 中文字幕日韩亚洲| 亚洲精品国产欧美| 一起操在线播放| 一区二区三区福利| 成人黄色av网| 亚洲欧美日本在线观看| 成人免费在线视频观看| 欧美一区二区三区爽大粗免费| 一区在线影院| 亚洲精品一区二区三区影院 | 日韩在线播放视频| 成人午夜视频精品一区| 久久精品国产久精国产| 久久久久资源| www视频在线看| 一本久道中文字幕精品亚洲嫩| 伊人免费视频二| 色婷婷综合久久久久久| 久99九色视频在线观看| 人妻中文字幕一区二区三区| 成人av网站大全| 偷拍盗摄高潮叫床对白清晰| 在线免费看h| 日韩三级中文字幕| 精品一区二区6| 亚洲欧美日韩在线观看a三区| 亚洲一区二区三区xxx视频| 麻豆影视在线| 无吗不卡中文字幕| 性折磨bdsm欧美激情另类| 久久中文字幕二区| 国产成人精品日本亚洲| 天天干天天爱天天操| 亚洲精品久久7777| 欧美一级xxxx| 久久精品国产www456c0m| 欧美亚洲国产日本| 成人毛片在线精品国产| 亚洲欧美色综合| 欧美在线aaa| 精品一级毛片| 国产精品白嫩美女在线观看 | 久久精品波多野结衣| 久久精品国产77777蜜臀| 日韩国产欧美精品| 欧美色999| 亚洲欧美中文字幕在线一区| av资源免费观看| 99视频有精品| 国产原创中文在线观看| 国产图片一区| 91精品国产高清| 少妇av一区二区| 午夜精品视频在线观看| 一级黄色电影片| 精品999成人| 国产一区二区无遮挡| 91九色在线看| 亚洲国产小视频在线观看| 日本中文字幕网| 99久久精品免费看国产| 天天夜碰日日摸日日澡性色av| 国产精品对白| 91av视频在线观看| 国产中文字幕在线播放| 欧美曰成人黄网| 日本少妇aaa| 国产美女av一区二区三区| 日本a级片在线观看| 日韩在线观看一区二区三区| 欧美激情图片区| 日批免费在线观看| 日韩欧美国产中文字幕| 国产免费无遮挡吸奶头视频| 免费在线观看一区二区三区| 亚洲一区精彩视频| 看亚洲a级一级毛片| 欧美精品久久久久| 免费一级毛片在线观看| 欧美日韩国产影片| 欧美另类视频在线观看| 97精品久久久午夜一区二区三区 | 国产一二三在线| 亚洲日韩欧美视频一区| 一级黄色录像大片| 亚洲影视在线观看| 久久av无码精品人妻系列试探| 麻豆国产欧美一区二区三区| 免费看日b视频| 亚洲国产最新| 成人有码视频在线播放| 99久久精品免费看国产小宝寻花| 亚洲午夜性刺激影院| 国产美女主播在线观看| 精品久久久久久久久久 | 亚洲色图清纯唯美| 中文文字幕文字幕高清| 精品一区二区三区在线播放视频| 国产高清www| 波多野结衣的一区二区三区| 99久久一区三区四区免费| 日韩在线短视频| 久久免费福利视频| 日本暖暖在线视频| 亚洲精品美女久久久久| 国产精品视频一二区| 欧美日韩亚洲成人| 国产这里有精品| 久久精品视频在线看| 不卡中文字幕在线观看| 久久激情网站| 久久99久久99精品| 911精品美国片911久久久| 麻豆精品蜜桃一区二区三区| 蜜桃在线一区| 国产精品免费在线免费| 成人黄色动漫| 欧美成aaa人片免费看| av在线三区| 日韩黄在线观看| 精品久久在线观看| 欧美日韩国产123区| 国产精品久久久久久人| 亚洲高清免费观看高清完整版在线观看 | 少妇光屁股影院| 国产精品 欧美精品| 91极品尤物在线播放国产| 午夜综合激情| 国产不卡一区二区视频| 国产综合精品| 日本美女爱爱视频| 99久久精品费精品国产| 视频一区在线免费观看| 亚洲理论电影| 黄色国产精品一区二区三区| 911亚洲精品| 亚洲尤物视频网| 色综合久久久| 国产精品美女主播在线观看纯欲| 亚洲欧美韩国| 欧美亚洲免费电影| 电影在线观看一区| 国a精品视频大全| 色图在线观看| 欧美国产日韩免费| 日本大片在线播放| 久久99精品久久久久久噜噜| 在线观看h网| 精品自在线视频| 菠萝菠萝蜜在线观看| 另类色图亚洲色图| av电影高清在线观看| 欧美成年人视频| 亚洲色图美国十次| 欧美激情精品久久久久久大尺度 | 中文字幕在线不卡视频| 天堂资源在线视频| 国产精品久久久久久久岛一牛影视| 欧洲美熟女乱又伦| 中文无字幕一区二区三区 | 欧美精品aaa| 国产精品论坛| 国产91精品视频在线观看| 裤袜国产欧美精品一区| 国产精品视频网站| 国产精品1区在线| 波多野结衣一区二区三区在线观看| www.丝袜精品| 激情视频在线观看一区二区三区| 欧美日韩破处| 日韩精品资源| 99久久婷婷这里只有精品 | 色综合久久综合中文综合网| 老熟妇仑乱一区二区av| 欧美色综合久久| 国产男女猛烈无遮挡| 精品99一区二区三区| 欧美日韩在线精品一区二区三区激情综| 亚洲人成欧美中文字幕| 蜜桃av在线免费观看| 久久久久久久久久久国产| 香蕉伊大人中文在线观看| 国产精品一区=区| 亚洲视频国产| 日韩精品一区二区三区色偷偷| 久久久久久久久99精品大| av免费看网址| 日韩高清一级片| 成年人看片网站| 久久久国产午夜精品| 亚洲 欧美 变态 另类 综合| 亚洲福利国产精品| 久久久久久亚洲av无码专区| 欧美一卡在线观看| 你懂的视频在线| 另类美女黄大片| 日本免费久久| 成人免费视频网站入口| 欧美系列电影免费观看| 老子影院午夜伦不卡大全| 日韩电影在线观看一区| gogo亚洲国模私拍人体| 91小视频xxxx网站在线| 成人动漫在线一区| 久久久久无码精品| 久久久精品天堂| 好吊色视频在线观看| 色综合久久久久久久| 国产美女免费视频| 亚洲人成电影网站色www| av毛片在线免费看| 日韩av123| 66精品视频在线观看| 水蜜桃亚洲精品| 在线播放不卡| 午夜精品免费看| 国产亚洲欧美色| 国产午夜久久久| 欧美精品 国产精品| 国产原创av在线| 久久全国免费视频| 国产一区精品二区| 亚洲欧美日韩精品久久久| 亚洲综合国产| 国产国语老龄妇女a片| 亚洲天堂av老司机| 中文字幕 视频一区| 精品香蕉一区二区三区| 国产精品69xx| 亚洲已满18点击进入在线看片| 国产一区日韩| 北条麻妃在线观看| 99热这里都是精品| 久久精品国产亚洲AV无码麻豆 | 中文字幕亚洲专区| 国产精品迅雷| 黑人另类av| 亚洲乱码久久| 欧美做受高潮中文字幕| 亚洲国产三级在线| 亚洲国产视频一区二区三区| 久久天天躁狠狠躁夜夜av| 天天综合在线观看| 一区二区三区四区欧美日韩| 日韩成人午夜精品| 欧美18—19性高清hd4k| 色婷婷激情一区二区三区| 亚洲AV成人无码一二三区在线| 亚洲18私人小影院| 国内精品偷拍| 日韩小视频在线播放| a亚洲天堂av| 国产精品久久久久久久妇| 亚洲精品国产综合区久久久久久久| 91老司机福利在线| 国产一区二区三区高清| 136国产福利精品导航网址| 制服丝袜在线第一页| 亚洲成va人在线观看| 亚洲人成色777777精品音频| 欧美最猛性xxxxx免费| 九九热精品视频在线观看| 天天操天天爱天天爽| 中文字幕一区二区不卡| 国产成人久久精品77777综合 | 好看的日韩精品视频在线| 国产精品亚洲欧美| a级大片在线观看| 欧美综合一区二区| 免费黄色在线| 国产精品久久久久久久久久直播 | 中文字幕在线播放不卡| 最新91在线视频| 亚洲啊v在线免费视频| 国产毛片视频网站| 久久久久久久久久看片| 中国女人真人一级毛片| 久久久精品在线| 国产福利资源一区| 久久久久国产精品熟女影院 | 欧美日韩精品一区二区三区视频播放 | 玖玖在线精品| 三上悠亚作品在线观看| 亚洲国产成人在线播放| 欧美一级大黄| 国产精品av免费| 成人一级视频在线观看| 中文字幕视频网站| 日韩资源在线观看| 欧美福利在线播放网址导航| 无人在线观看的免费高清视频| 亚洲同性gay激情无套| 欧美 日韩 中文字幕| 国产精品 欧美在线| 国内精品福利| 在线观看免费黄色网址| 精品国产三级电影在线观看| 日韩一区二区三区在线免费观看 |