關於SpringBoot與SpringMVC的差異性

這是“金哥”問的第二個問題(特此標明)

水平有限,僅供參考!

#關於SpringBoot與SpringMVC的差異性


############################################################# 
############################################################# 部署與運行時的差異性
#############################################################
springboot內置web服務器,用其開發的web程序可以直接運行,而不需要通過tomcat這種web服務器來運行。
springmvc需要依賴於tomcat這種web服務器才能運行。
這兩者的不同,導致了其有不同的適用範圍。
#############################################################
############################################################# 兩者在視圖解析器配置上的差異性
#############################################################
//******************************************************************************************************************************
springboot推舉使用的視圖解析器是ThymeleafViewResolver,其一般用來解析的視圖類型是html。使用官方推舉的目錄結構適合用來搭配Thymeleaf視圖解析器,如果要改用InternalResourceViewResolver解析器,會相對要麻煩一些。
    需要注意的是,如果同時引入了這兩中類型的依賴,會以thymeleaf的優先級更高,會造成jsp解析失敗。
    springboot不支持從靜態資源直接請求jsp文件!即使配置了與其對應的視圖解析器。
    #如果要配置InternalResourceViewResolver來解析jsp類型的視圖,按以下次序進行:
    第一步:需要引入兩個依賴:
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    第二步:在resources的同級目錄(main的子目錄)下創建webApp/WEB-INF/兩個目錄,將jsp文件存放與WEB-INF目錄下。
        需要注意的是,必須該目錄結構的名稱必須與所述一致,否則會出現找不到jsp文件的情況!
    第三步:在application.properties配置文件中配置以下兩個參數:
        spring.mvc.view.prefix= /WEB-INF/
        spring.mvc.view.suffix=.jsp
    #springboot配置Thymeleaf解析器,按以下次序進行
    第一步:添加一個依賴:
        dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
    第二步:在application.properties配置文件中配置以下兩個參數:
        spring.thymeleaf.prefix=classpath:/templates/
        spring.thymeleaf.suffix=.html
//******************************************************************************************************************************    
springmvc配置InternalResourceViewResolver解析器會相對簡單,而配置Thymeleaf視圖解析器會相對麻煩一些。
    #springmvc下配置InternalResourceViewResolver解析器,按以下次序進行:
    第一步:在dispatcher-servlet.xml中配置一個bean
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/" />
            <property name="suffix" value=".jsp" />
        </bean>
    #springmvc下配置Thymeleaf解析器,按以下次序進行:
    第一步:在dispatcher-servlet.xml中配置三個bean
        <bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
            <property name="prefix" value="/context/"/>
            <property name="suffix" value=".html"/>
            <property name="templateMode" value="HTML5"/>
            <property name="characterEncoding"  value="UTF-8" />
        </bean>
        <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
            <property name="templateResolver" ref="templateResolver" />
        </bean>
        <bean id="viewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
            <property name="order" value="1"/>
            <property name="characterEncoding" value="UTF-8"/>
            <property name="templateEngine" ref="templateEngine"/>
        </bean>
//******************************************************************************************************************************
#############################################################
############################################################# 在端口監聽方面的差異性
#############################################################
springboot由於是內置有web服務器所有,其一般一個web應用就對應於一個端口號,且其端口好由應用自行決定。端口的監聽也由應用自己進行。
而springmvc開發的應用是運行在tomcat上的,這導致了該應用所配置的端口號是由tomcat來決定的,繼而一個端口下可能存在多個web應用。使得對於每個web應用的訪問要通過各個應用的根目錄來區分。端口的監聽由tomcat進行。
簡述爲:
springboot開發的web應用與端口是一對一的關係;
springmvc開發的web應用與端口是多對一的關係;
這個差異性使得,springboot比springmvc更適合在“前後分離開發”模式中用來開發後端。

 

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章