- 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中配置集成。這個過程也比較費時。
- 大學計算機基礎(第二版)
- Mastering Entity Framework Core 2.0
- JavaScript修煉之道
- 數據結構簡明教程(第2版)微課版
- 深入淺出Windows API程序設計:編程基礎篇
- Building Mobile Applications Using Kendo UI Mobile and ASP.NET Web API
- 名師講壇:Spring實戰開發(Redis+SpringDataJPA+SpringMVC+SpringSecurity)
- Windows Server 2016 Automation with PowerShell Cookbook(Second Edition)
- 琢石成器:Windows環境下32位匯編語言程序設計
- bbPress Complete
- C語言程序設計
- HTML 5與CSS 3權威指南(第3版·上冊)
- Mastering Linux Security and Hardening
- Getting Started with Python and Raspberry Pi
- JBoss:Developer's Guide