1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Spring MVC 過時了嗎?

        共 2911字,需瀏覽 6分鐘

         ·

        2020-12-11 07:21

        點擊上方藍色“程序猿DD”,選擇“設為星標”

        回復“資源”獲取獨家整理的學習資料!

        作者 |?陳龍@知乎

        來源 |?https://www.zhihu.com/question/294282002/answer/521229241

        正文如下:

        問題:Spring MVC 過時了嗎?

        我看了一下這個問題的日志,這個問題是2018年9月提出來的。

        那么好,首先給出結論:Spring MVC沒有過時,它仍然是當前主流的Java Web開發(fā)框架。但是,在這個時間點談論這個問題就有點意思了。題主提出這個問題的時候,可能都沒有意識到這個問題正處在Web開發(fā)思想變革的分水嶺上。

        首先,說一下答主這個問題描述中不準確的地方,后面再著重說說現(xiàn)在的分水嶺。

        現(xiàn)在jsp似乎已經(jīng)漸漸淡出大家的視野。web開發(fā)朝著前后端分離的方向去了

        這個沒錯。但是,

        像spring mvc這樣前后端耦合較大的框架是否過時了?

        這個疑問就沒有必要了。

        Spring MVC前后端耦合不大啊。你完全可以使用@RestController。

        @RestControlleris a specialized version of the controller. It includes the @Controller and @ResponseBody annotations and as a result, simplifies the controller implementation:

        @RestController
        @RequestMapping("books-rest")
        public?class?SimpleBookRestController?{
        ?????
        ????@GetMapping("/{id}",?produces?=?"application/json")
        ????public?Book?getBook(@PathVariable?int?id)?{
        ????????return?findBookById(id);
        ????}
        ?
        ????private?Book?findBookById(int?id)?{
        ????????//?...
        ????}
        }

        前后端分離,沒有JSP或其他服務器端模板引擎,只有HTTP上傳輸?shù)腏SON交互,那么必然用@RestController。JSON是服務器端MVC框架的V,是前端MVC框架的M。

        --------------重點開始-------------

        下面說一下為什么現(xiàn)在這個問題比較有意思了。

        因為從Spring 5開始,大量引入了Reactive概念,也就是響應式思想?。?!

        所以,Spring 4及以前版本長期存在的Spring MVC有了一個并列同時存在的新的編程模型,Spring WebFlux。

        上圖,左側是新的Spring WebFlux,可以看出一切都是Reactive的。右側是我們熟悉的Spring MVC,是基于Servlet API的。

        這個問題下的其他回答,竟然還在問:

        那你是覺得哪個框架替代了Spring MVC?

        你能找出其他框架來代替它嗎?如果沒有,那就沒有過時

        你們最近半年訪問過Spring 官網(wǎng)首頁嗎?

        特別是2018的Spring One大會,大家注意到了嗎?看一下所有的話題(session),多少題目里都包含了Reactive:

        參考:https://springone.io/2018/sessions

        所以,如果Spring認定了Reactive是趨勢的話,傳統(tǒng)的Spring MVC應該是處于Deprecated狀態(tài)。上圖中兩種模型可能會長期并存,但是Spring 6以后就不好說了~

        在今年的Spring One大會上,Spring提出了一整套Reactive技術,Spring 自己稱作Reactive Revolution:

        參考:https://spring.io/blog/2018/09/27/the-reactive-revolution-at-springone-platform-2018-part-1-n

        還有更多的Reactive思想涌現(xiàn)出來了,大家要保持關注。

        不僅僅是服務器端,前端的Reactive也很活躍,例如Rxjs。

        正如Spring自己定義的那樣,現(xiàn)在是一場Reactive Revolution,這場思想革命波及Web開發(fā)的全棧,數(shù)據(jù)庫=>服務器=>前端。

        所以,此時想一下Spring MVC是否過時是個很有意思的問題。它仍是最主流最成熟的Java服務器端MVC框架,但它并不代表Web進化的方向。

        評論區(qū)有人提到Vert.x。到目前Vert.x也只是個tool-kit,不適一整套框架?,F(xiàn)在技術講求的是生態(tài)環(huán)境,Spring現(xiàn)在基本上是占有生態(tài)優(yōu)勢,有Spring MVC的普及率。不管Spring MVC還是Web Flux,都能融入這個生態(tài),Spring Boot都會給予先天的支持。

        回復@無憂

        編程首先思想活動,然后才是敲代碼。學習編程的語言、框架等等,首先是思想跟上。比如前端用慣了JQuery的人,直接操作DOM,讓他們學習Angular、VUE這總雙向綁定,肯定也會覺得反直覺。但是說到底,思想在進步,落后的思想就會覺得先進思想反直覺。民國時期,多少人看到女人穿泳衣游泳也覺得反直覺,但是現(xiàn)在都是正常的。

        生態(tài)也不是一天建成的,如果是個小團隊提出的框架,我可能覺得會涼。但是以Spring多少年在Web開發(fā)上的積淀,然后能夠自我革新提出Webflux,并且打算建立一整套Reacitve生態(tài),我覺得成為主流還是很有可能的。還是拿前端的例子來說,為啥大家十年如一日JQuery用的好好的,然后接受Angularjs的雙向綁定,因為首先是Google提出來的,它自己內部就有大量應用。為啥Angularjs用的好好的,突然又開始用React的Virtual DOM?因為首先是Facebook提出來的,它自己有成功的應用。

        看完這篇文章,你覺得Spring MVC會過時嗎?

        歡迎在留言區(qū)留言一起討論~

        DD自研的滬牌代拍業(yè)務,點擊直達


        【往期推薦】

        用了這么多年 curl,竟然不知道還有這種用法?!

        2020-12-07

        一招教你使用微信隱藏表情!

        2020-12-07

        將 Docker 踢出群聊后,Kubernetes 還能否歡快地蹦跶嗎?

        2020-12-06

        Redis面試突擊專用

        2020-12-06

        殊途同歸!招聘軟件與社交軟件最終都要走向約P宿命?

        2020-12-05

        Spring-Retry重試實現(xiàn)原理

        2020-12-05



        掃一掃,關注我

        一起學習,一起進步

        每周贈書,福利不斷

        深度內容

        推薦加入



        歡迎加入知識星球,一起探討技術架構,交流技術人生。
        加入方式,長按下方二維碼:
        已在知識星球更新如下:

        素質二連,走一個

        瀏覽 61
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亚洲第一黄色视频 | 乱人伦xxxx国语对白 | 台湾成人无码 | 深爱激情婷婷综合基地 | 不卡无码高清 | 三上悠亚中文字幕在线播放 | 夜夜操狠狠操 | 久久精品国产电影 | 国产成人AV无码一区二区三区 | 女人一级A片色黄情免费 |