官术网_书友最值得收藏!

  • Spring Boot開發實戰
  • 陳光劍
  • 1255字
  • 2019-01-05 10:00:24

3.1 傳統的SSM開發過程

傳統的SSM(Spring + SpringMVC + MyBatis),曾經是主流的企業級架構方案:標準的MVC分層架構設計模式,將整個系統劃分為模板視圖(View)層、控制器(Controller)層、業務邏輯Service層、數據庫訪問的Dao層。我們使用Spring MVC負責請求的轉發和視圖管理,使用Spring核心容器實現業務對象的協作和生命周期的管理,MyBatis作為數據庫ORM層的對象持久化引擎。

我們需要小心翼翼地配置pom.xml中的各種項目依賴及其版本以保證jar包不沖突。這個pom.xml將是一個很龐大的依賴配置,動輒上百行。這么多的依賴,各種版本號也都必須要對得上,不能發生版本不兼容的情況。然后,我們還需要仔細配置Spring上下文spring.xml文件。這個Spring配置文件是Spring的BeanFactory工廠進行Bean生產、依賴關系注入(裝配)及Bean實例分發的“圖紙總綱”。Java EE程序員必須學會并靈活應用這份“圖紙”來準確地表達自己的“生產意圖”。

Spring配置文件是一個或多個標準的XML文檔,如果在web.xml中沒有顯式指定contextConfigLocation,將會使用XmlWebApplicationContext的默認的配置/WEB-INF/app-licationContext.xml。applicationContext.xml是Spring的默認配置文件,當容器啟動時找不到指定的配置文檔時,將會嘗試加載這個默認的配置文件。

如果我們使用自定義名稱的spring.xml文件,就需要在web.xml中通過配置contex-ConfigLocation參數來指定Spring的配置文件。代碼示例如下:

        <? xml version="1.0" encoding="UTF-8"? >
        <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xmlns="http://java.sun.com/xml/ns/j2ee"
                  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/
                      xml/ns/j2ee/web-app_2_4.xsd"
                  version="2.4">
            <! -- 配置Spring -->
            <context-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:spring.xml</param-value>
            </context-param>
            …
        </web-app>

完整的Spring配置文件spring.xml內容通常也非常龐大。

如果是Java Web項目的開發,通常還需要配置SpringMVC的上下文spring-mvc.xml這個XML。SpringMVC的上下文配置文件主要是:

        org.springframework.web.servlet.DispatcherServlet

這個DispatcherServlet類在初始化過程中使用。DispatcherServlet提供Spring Web MVC的集中訪問點,負責職責的分派,而且與Spring IoC容器無縫集成,從而可以獲得Spring的所有好處。我們需要在spring-mvc.xml中配置默認的注解映射的支持、自動掃描包路徑、視圖模板引擎等等一系列配置,完整的spring-mvc.xml配置文件內容參考示例工程源代碼。

在Web應用中的web.xml中通常還需要配置DispatcherServlet,在應用程序目錄中的classpath: spring-mvc.xml配置springMVC的配置文件位置。一個配置實例如下:

            <! -- 配置springmvc -->
            <servlet>
                <servlet-name>springMVC</servlet-name>
                <servlet-class>org.springframework.web.servlet.DispatcherServlet</
                    servlet-class>
                <init-param>
                    <param-name>contextConfigLocation</param-name>
                    <param-value>classpath:spring-mvc.xml</param-value>
                </init-param>
                <load-on-startup>1</load-on-startup>
            </servlet>
              <servlet-mapping>
                  <servlet-name>springMVC</servlet-name>
                  <url-pattern>/</url-pattern>
              </servlet-mapping>

這樣,Spring Web MVC框架將加載“classpath: spring-mvc.xml”來進行初始化上下文而不是約定的默認文件路徑“/WEB-INF/[servlet名字]-servlet.xml”。

項目完整的web.xml配置文件的內容參考示例工程。

提示

本節介紹的傳統SSM實例工程源代碼參考:https://github.com/KotlinSpring Boot/spring_mybatis_demo

web.xml文件是用來初始化整個項目的配置信息的。比如Welcome頁面、servlet、servlet-mapping、filter、listener、啟動加載級別等。web.xml又叫部署描述符文件,是在Servlet規范中定義的,是web應用的配置文件。部署描述符文件就像所有XML文件一樣,必須以一個XML頭開始。這個頭聲明可以使用的XML版本并給出文件的字符編碼。DOCYTPE聲明必須立即出現在此頭之后。這個聲明告訴服務器適用的servlet規范的版本(如2.2或2.3)并指定管理此文件其余部分內容的語法的DTD(Document Type Definition,文檔類型定義)。所有部署描述符文件的頂層(根)元素為web-app。請注意,XML元素是大小寫敏感的。因此,web-App和WEB-APP都是不合法的,web-app必須用小寫。

web.xml的加載順序是:

        <context-param>→<listener>→<filter>→<servlet>

其中,如果web.xml中出現了相同的元素,則按照在配置文件中出現的先后順序來加載。另外,當我們使用Spring的@Service、@Controller等注解的時候,需要告訴Spring去哪里掃描并注冊這些Bean,這個配置在spring.xml中,例如:

        <! -- 掃描service、dao組件 --><context:component-scan base-package="com.easy.
        Spring Boot"/>

我們在上一章中已經知道了:

        <context:component-scan base-package="com.easy.Spring Boot"/>

這個配置等價于下面這段使用注解配置的代碼:

        @ComponentScan(basePackage="com.easy.Spring Boot")

在Spring Boot中就是大量使用基于注解的配置,從而去除XML配置。

傳統的Java Web項目的開發過程中,通常還需要單獨去配置Tomcat服務器,然后在IDE中配置集成。這個過程也比較費時。

主站蜘蛛池模板: 宁德市| 木里| 论坛| 黎平县| 横峰县| 长子县| 雅江县| 山西省| 岗巴县| 大同市| 嵊州市| 年辖:市辖区| 铅山县| 昭苏县| 阜新市| 建瓯市| 盘山县| 宁阳县| 临洮县| 疏附县| 疏勒县| 庄浪县| 襄汾县| 疏勒县| 姚安县| 和静县| 治多县| 万山特区| 文昌市| 凭祥市| 巴南区| 历史| 沙湾县| 巴南区| 顺昌县| 峨边| 长宁县| 丽江市| 焦作市| 临汾市| 醴陵市|