日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

淺談Spring 的Controller 是單例or多例

瀏覽:144日期:2023-08-18 10:43:40

背景:今天寫(xiě)代碼遇到一個(gè)Controller 中的線程安全問(wèn)題,那么Spring 的Controller 是單例還是多例的呢?若為單例又如何保證并發(fā)安全呢?

一、面試回答

Spring管理的Controller,即加入@Controller 注入的類(lèi),默認(rèn)是單例的,因此建議:

1、不要在Controller 中定義成員變量;(單例非線程安全,會(huì)導(dǎo)致屬性重復(fù)使用)

2、若必須要在Controller 中定義一個(gè)非靜態(tài)成員變量,則通過(guò)注解@Scope('prototype'),將其設(shè)置為多例模式。

二、驗(yàn)證Controller 單例

驗(yàn)證代碼:

package com.ausclouds.bdbsec.tjt;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;/** * @author tjt * @time 2020-08-25 * @desc 驗(yàn)證Controller 單例 */@Controller@ResponseBody@RequestMapping('/tjt')public class TestSingleController { private long money = 10; @GetMapping('/test1') public long testSingleOne(){ money = ++money; System.out.println('/tjt/test1: the money I have: ' + money); return money; } @GetMapping('test2') public long testSingleTwo(){ money = ++money; System.out.println('/tjt/test2: the money I have: ' + money); return money; }}

首先,訪問(wèn)http://localhost:8088/test1,得到的答案是11;

接著,再訪問(wèn)http://localhost:8088/test2,得到的答案是 12;

不難看出:同一個(gè)變量,兩次訪問(wèn)得到不同的結(jié)果,很明顯是線程不安全的。

驗(yàn)證截圖:

淺談Spring 的Controller 是單例or多例

三、Controller 如何實(shí)現(xiàn)多例?

盡量不要在Controller 中定義成員變量,若必須要在Controller 中定義一個(gè)非靜態(tài)成員變量,則通過(guò)注解@Scope('prototype'),將其設(shè)置為多例模式;或者是在Controller 中使用ThreadLocal 變量。

驗(yàn)證代碼:

package com.ausclouds.bdbsec.tjt;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;/** * @author tjt * @time 2020-08-25 * @desc 驗(yàn)證Controller 單例 */@Controller@ResponseBody@Scope('prototype') // 將Controller 設(shè)置為多例模式@RequestMapping('/tjt')public class TestSingleController { private long money = 10; @GetMapping('/test1') public long testSingleOne(){ money = ++money; System.out.println('/tjt/test1: after use @Scope the money I have: ' + money); return money; } @GetMapping('test2') public long testSingleTwo(){ money = ++money; System.out.println('/tjt/test2: after use @Scope the money I have: ' + money); return money; }}

在加上@Scope('prototype')后首先,訪問(wèn)http://localhost:8088/test1,得到的答案是11;

接著,再訪問(wèn)http://localhost:8088/test2,得到的答案也是 11;

不難看出:同一個(gè)變量,兩次訪問(wèn)得到相同的結(jié)果。

驗(yàn)證截圖:

淺談Spring 的Controller 是單例or多例

四、作用域

其實(shí),spring bean 的作用域除了上面使用的prototype 外,還有singleton、request、session 和global session 四種;其中request、session 和global session 主要運(yùn)用在Web 項(xiàng)目中。

singleton:?jiǎn)卫J剑?dāng)spring 創(chuàng)建applicationContext 容器的時(shí)候,spring會(huì)預(yù)初始化所有的該作用域?qū)嵗?,加上lazy-init 就可以避免預(yù)處理; prototype:原型模式,每次通過(guò)getBean 獲取該bean 就會(huì)新產(chǎn)生一個(gè)實(shí)例,創(chuàng)建后spring 將不再對(duì)其管理; request:每次請(qǐng)求都新產(chǎn)生一個(gè)實(shí)例,和prototype 不同就是創(chuàng)建后,接下來(lái)的管理,spring依然在監(jiān)聽(tīng); session:每次會(huì)話,同上; global session:全局的web 域,類(lèi)似于servlet 中的application。

到此這篇關(guān)于淺談Spring 的Controller 是單例or多例的文章就介紹到這了,更多相關(guān)Spring Controller 單例or多例內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91综合久久爱com| 欧美日韩视频免费看| 一本一道久久a久久精品蜜桃| 成人羞羞在线观看网站| 欧美精品一区二区三区精品| 视频在线观看一区| 国产毛片精品久久| 丝袜诱惑一区二区| 日韩一级欧洲| 国产日韩欧美三区| 欧美gv在线| 免费久久精品视频| 久久久国产精品入口麻豆| 国产成年精品| 伊人精品在线| 欧美精品国产一区| 日韩不卡视频在线观看| 久久99伊人| 你懂的亚洲视频| 久久蜜桃av| 91成人在线精品视频| 日本精品影院| 久久狠狠久久| 免费av一区| 国产精品xxx在线观看| 色88888久久久久久影院| 日韩一区精品| 999精品色在线播放| 日本伊人久久| 国产精品久久久久av电视剧| 亚洲精品美女| 欧美一区久久久| 日本综合精品一区| 国产精品字幕| 久久国产精品免费一区二区三区 | 国产福利91精品一区二区| 国产亚洲精品久久久久婷婷瑜伽| 你懂的网址国产 欧美| 国产婷婷精品| 国语精品一区| 亚洲精品在线二区| 少妇精品导航| 国产精品白丝av嫩草影院| 在线亚洲观看| 国产91在线精品| 欧美亚洲tv| 鲁大师成人一区二区三区| 亚洲午夜天堂| 国产人成精品一区二区三| 日韩亚洲精品在线| 日韩欧美1区| 欧美久久精品| 伊人久久大香伊蕉在人线观看热v| 涩涩av在线| 国产日韩欧美三级| 水野朝阳av一区二区三区| 岛国av在线网站| 欧美亚洲tv| 亚洲日韩中文字幕一区| 欧美va亚洲va日韩∨a综合色| 红杏一区二区三区| 国产视频网站一区二区三区| 只有精品亚洲| 午夜日韩福利| 三上悠亚国产精品一区二区三区| 欧美1区二区| 欧美一区二区三区久久精品| 国产女优一区| 亚洲国产成人精品女人| 日韩欧美精品综合| 美女视频免费精品| 国产亚洲人成a在线v网站| 亚洲一区二区三区中文字幕在线观看| 91精品亚洲| 日本高清不卡一区二区三区视频| 麻豆91在线播放| 国产精品久一| 国产欧美另类| 国产精品三p一区二区| 日本aⅴ免费视频一区二区三区| 免费日韩av片| 久久亚洲专区| 久久要要av| 久久免费国产| 日韩中文在线电影| 国产黄大片在线观看| 卡一精品卡二卡三网站乱码| 麻豆精品新av中文字幕| 国产精品久久久久久模特 | 91欧美国产| 精品久久久久中文字幕小说| 国产精东传媒成人av电影| 911亚洲精品| 国产三级一区| 国产乱人伦精品一区| 国产精品亚洲一区二区在线观看| 欧美专区一区| 视频一区日韩| 日韩视频1区| 日韩精品亚洲专区在线观看| 日本不卡中文字幕| 欧美精品观看| 久久精品国产久精国产爱| 久久精品国产福利| 国产自产自拍视频在线观看| 超碰成人av| 成人免费电影网址| 欧美日韩国产欧| 老牛国产精品一区的观看方式| 蜜桃av一区二区| 日本不卡高清| 国产免费久久| 国产精品99久久久久久董美香| 国产精品久久久网站| 精品视频91| 久久中文字幕二区| 免费日韩视频| 日韩福利视频一区| 欧美成人精品午夜一区二区| 国产精品原创| 91成人精品视频| 免费久久99精品国产| 久久国际精品| 国产a亚洲精品| 激情六月综合| 亚洲一区二区三区中文字幕在线观看| 日本久久一区| 免费在线欧美黄色| 日韩精品2区| 在线亚洲激情| 久久国内精品视频| 日韩毛片视频| 三级一区在线视频先锋| 欧美亚洲一区二区三区| 97精品中文字幕| 99亚洲精品| 婷婷精品在线| 国产成人精品一区二区免费看京| 在线日韩中文| 日韩精品一区二区三区中文字幕| 黄色网一区二区| 亚洲激情中文| 国产日韩欧美一区| 免费在线小视频| 午夜天堂精品久久久久| 成人午夜在线| 久久最新视频| 国产不卡一区| 免费在线看一区| 久久精品国产网站| 在线一区免费观看| 欧美极品一区二区三区| 亚洲午夜在线| 国产日韩欧美三区| 宅男在线一区| 国产精品嫩草影院在线看| 99精品视频在线| 国产精品永久| 999精品一区| 国产日韩一区| 91国语精品自产拍| 免费一区二区三区在线视频| 91超碰国产精品| 精品一区视频| 视频一区中文字幕| 岛国av在线播放| 日本不卡高清视频| 亚洲午夜av| 国产精品115| 99在线精品免费视频九九视| 欧美激情麻豆| 亚洲有吗中文字幕| 九色porny丨国产首页在线| 日韩一区网站| 极品日韩av| 免费在线观看一区| 亚洲资源网站| 久久国产毛片| 麻豆一区在线| 亚洲精品日韩久久| 欧美日韩水蜜桃| 久久99免费视频| 亚洲一区二区小说| 香蕉久久99| 精品国产乱码久久久| 在线视频亚洲欧美中文| 久久精品国产www456c0m| 国产精品v亚洲精品v日韩精品| 欧美va天堂在线| 日本久久精品| 国产精品自在| 日本在线观看不卡视频| 在线一区免费| 国产粉嫩在线观看| 国产精品videossex| 首页欧美精品中文字幕| 亚洲精品.com| 国产v日韩v欧美v| 国产精品欧美一区二区三区不卡| 天堂久久av|