<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【49期】面試官:SpringMVC的控制器是單例的嗎?

          共 1346字,需瀏覽 3分鐘

           ·

          2020-09-29 03:28

          程序員的成長之路
          互聯(lián)網(wǎng)/程序員/技術(shù)/資料共享?
          關(guān)注


          閱讀本文大概需要 2.8 分鐘。

          來源:
          blog.csdn.net/qq_27026603/article/details/67953879
          對于SpringMVC Controller單例和多例,下面舉了個例子說明下.
          第一次:類是多例,一個普通屬性和一個靜態(tài)屬性。
          結(jié)果:
          普通屬性:0.............靜態(tài)屬性:0
          普通屬性:0.............靜態(tài)屬性:1
          普通屬性:0.............靜態(tài)屬性:2
          普通屬性:0.............靜態(tài)屬性:3
          所以說:對于多例情況普通屬性是不會共用的,不會產(chǎn)生影響,對于靜態(tài)屬性會去共用這個屬性。
          第二次:類改為單例
          結(jié)果:
          普通屬性:0.............靜態(tài)屬性:0
          普通屬性:1.............靜態(tài)屬性:1
          普通屬性:2.............靜態(tài)屬性:2
          普通屬性:3.............靜態(tài)屬性:3
          所以說:對于單例情況普通屬性和靜態(tài)屬性都會被共用。
          第三次:類去掉@Scope注解
          結(jié)果:
          普通屬性:0.............靜態(tài)屬性:0
          普通屬性:1.............靜態(tài)屬性:1
          普通屬性:2.............靜態(tài)屬性:2
          普通屬性:3.............靜態(tài)屬性:3
          所以說:springmvc默認(rèn)是單例的。
          另外在其他方法里面打印
          輸出的結(jié)果是
          跳到別的方法里面也并不會去取初始值,而是再去共用這個屬性。

          總結(jié)

          盡量不要在controller里面去定義屬性,如果在特殊情況需要定義屬性的時候,那么就在類上面加上注解@Scope("prototype")改為多例的模式.
          以前struts是基于類的屬性進行發(fā)的,定義屬性可以整個類通用,所以默認(rèn)是多例,不然多線程訪問肯定是共用類里面的屬性值的,肯定是不安全的,但是springmvc是基于方法的開發(fā),都是用形參接收值,一個方法結(jié)束參數(shù)就銷毀了,多線程訪問都會有一塊內(nèi)存空間產(chǎn)生,里面的參數(shù)也是不會共用的,所有springmvc默認(rèn)使用了單例.
          所以controller里面不適合在類里面定義屬性,只要controller中不定義屬性,那么單例完全是安全的。springmvc這樣設(shè)計主要的原因也是為了提高程序的性能和以后程序的維護只針對業(yè)務(wù)的維護就行,要是struts的屬性定義多了,都不知道哪個方法用了這個屬性,對以后程序的維護還是很麻煩的。
          留一個問題:那他是線程安全的嗎?知道的歡迎留言解答

          推薦閱讀:

          【48期】盤點Netty面試常問考點:什么是 Netty 的零拷貝?

          【47期】六大類二叉樹面試題匯總解答

          【46期】盤點那些必問的數(shù)據(jù)結(jié)構(gòu)算法題之快速排序

          5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機,樹莓派,等等。在公眾號內(nèi)回復(fù)「2048」,即可免費獲取!!

          微信掃描二維碼,關(guān)注我的公眾號

          朕已閱?

          瀏覽 72
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  69视频在线免费看 | sm骚逼麻豆 | 人人妻人人| 天堂中文资源在线 | 免费观看在线a片 |