<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>

          Spring MVC 過時(shí)了嗎?

          共 3098字,需瀏覽 7分鐘

           ·

          2021-03-08 10:28

          作者:陳龍

          zhihu.com/question/294282002/answer/521229241

          正文如下:

          問題:Spring MVC 過時(shí)了嗎?

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

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

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

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

          這個(gè)沒錯(cuò)。但是,

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

          這個(gè)疑問就沒有必要了。

          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或其他服務(wù)器端模板引擎,只有HTTP上傳輸?shù)腏SON交互,那么必然用@RestController。JSON是服務(wù)器端MVC框架的V,是前端MVC框架的M。


          重點(diǎn)開始

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

          因?yàn)閺腟pring 5開始,大量引入了Reactive概念,也就是響應(yīng)式思想!!!

          所以,Spring 4及以前版本長(zhǎng)期存在的Spring MVC有了一個(gè)并列同時(shí)存在的新的編程模型,Spring WebFlux。

          圖片

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

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

          那你是覺得哪個(gè)框架替代了Spring MVC?

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

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

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

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

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

          在今年的Spring One大會(huì)上,Spring提出了一整套R(shí)eactive技術(shù),Spring 自己稱作Reactive Revolution:

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

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

          圖片

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

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

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

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

          回復(fù)@無憂

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

          生態(tài)也不是一天建成的,如果是個(gè)小團(tuán)隊(duì)提出的框架,我可能覺得會(huì)涼。但是以Spring多少年在Web開發(fā)上的積淀,然后能夠自我革新提出Webflux,并且打算建立一整套R(shí)eacitve生態(tài),我覺得成為主流還是很有可能的。還是拿前端的例子來說,為啥大家十年如一日J(rèn)Query用的好好的,然后接受Angularjs的雙向綁定,因?yàn)槭紫仁荊oogle提出來的,它自己內(nèi)部就有大量應(yīng)用。為啥Angularjs用的好好的,突然又開始用React的Virtual DOM?因?yàn)槭紫仁荈acebook提出來的,它自己有成功的應(yīng)用。

          看完這篇文章,你覺得Spring MVC會(huì)過時(shí)嗎?

          面試絕對(duì)不能寫的代碼片段

          說實(shí)話!你知道 Java 中的回調(diào)機(jī)制嗎?

          《吃透 MQ 系列》之核心基礎(chǔ)篇

          介紹一款 API 敏捷開發(fā)工具,太爽了!

          一款 Java 開源的 Spring Boot 即時(shí)通訊 IM 聊天系統(tǒng)

          趕快試試 IDEA 解決 Maven 依賴沖突的高能神器!

          瀏覽 44
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  国语对白久久 | 亚洲欧美999 | 大黑逼网| 俺去俺也射| 女人 精96XXXxx在线播放 |