《Spring 3.0就這麼簡單》——1.3 環境準備
本節書摘來自異步社區《Spring 3.0就這麼簡單》一書中的第1章,第1.3節,作者: 陳雄華 , 林開雄著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看
1.3 環境準備
1.3.1 創建庫表
(1)啟動MySQL數據庫後,用DOS命令窗口登錄數據庫。
mysql>mysql –uroot –p1234 --port 3309
分別指定用戶名和密碼,MySQL默認運行在3306端口,如果不是運行在默認端口,需要通過--port參數指定端口號。
(2)運行以下腳本,創建實例對應的數據庫。
mysql>DROP DATABASE IF EXISTS sampledb;
mysql>CREATE DATABASE sampledb DEFAULT CHARACTER SET utf8;
mysql>USE sampledb;
數據庫名為sampledb,默認字符集采用UTF-8。
(3)創建實例所用的兩張表。
##創建用戶表
mysql>CREATE TABLE t_user (
user_id INT AUTO_INCREMENT PRIMARY KEY,
user_name VARCHAR(30),
password VARCHAR(32),
last_visit datetime,
last_ip VARCHAR(23)
)ENGINE=InnoDB;
##創建用戶登錄日誌表
mysql>CREATE TABLE t_login_log (
login_log_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
ip VARCHAR(23),
login_datetime datetime
)ENGINE=InnoDB;
t_user表為用戶信息表,t_login_log為用戶登錄日誌表。其中ENGINE=InnoDB指定表的引擎為InnoDB類型,該類型表支持事務。MySQL默認采用MyISAM引擎,該類型表不支持事務,僅存儲數據,優點在於讀寫很快。對於景區網站型應用係統的表來說,大可使用不支持事務的MyISAM引擎,但本書出於演示事務的目的,所有表均采用支持事務的InnoDB引擎。
(4)初始化一條數據,用戶名/密碼為admin/123456。
##插入初始化數據
mysql>INSERT INTO t_user (user_name,password) VALUES('admin','123456');
mysql>COMMIT;
用戶也可以直接運行腳本文件來完成以上所有工作,創建數據庫表的腳本文件位於chapter1/src/main/schema/sampledb.sql,下麵提供了兩種運行腳本的方法。
直接通過mysql命令運行。
假設從github.com下載本書示例代碼中的內容並複製到D:\actionSpring目錄下,則在DOS命令窗口中運行以下命令。
D:\> mysql -u root -p1234 --port 3309 <D:\actionSpring\chapter1\schema\sampledb.sql
也可以在登錄MySQL後,通過source命令運行腳本。mysql>source D:\actionSpring\chapter1\src\main\schema\sampledb.sql
1.3.2 建立工程
考慮到IntelliJ IDEA 是一款非常優秀且強大的IDE工具,特別是對Maven等工具提供了良好支持,越來越受企業開發人員的喜愛。本書的所有示例都采用IDEA(11.0版本)進行開發。將IDEA的工作空間設置於D:\actionSpring,為了避免因路徑不一致而引起的各種問題,請盡量保證工作空間和本書的路徑一致。示例工程源文件和配置文件都使用UTF-8編碼格式,UTF-8可以很好地解決國際化問題,同時避免不受歡迎的中文亂碼問題,用戶可以執行File→Settings→File Encodings命令將IDEA的工作空間編碼格式設置為UTF-8編碼格式。
在D:\actionSpring中建立一個名為chapter的Maven主工程項目,如圖1-4所示。
設置項目名稱為chapter,項目路徑為D:\actionSpring\chapter,並選擇項目類型為Maven Module,單擊Next按鈕,進入Maven工程設置窗口,如圖1-5所示。
設置Maven的GroupId為com.smart,ArtifactId為chapter,Version版本號為3.1-SNAPSHOT之後,單擊Finish按鈕完成主工程的創建,之後所有章節的代碼示例將在這個主工程上以模塊的方式進行創建。接下來,就可以創建本章示例的模塊chapter1,可以通過File→New Module→Add Module對話框來實現,如圖1-6所示。
選擇Create module from scratch選項,並單擊Next按鈕進入模塊設置窗口,如圖1-7所示。
設置模塊的名稱為chapter1,選擇類型為Maven Module,其他保持默認值即可,單擊Next按鈕,完成模塊創建。後麵所有章節的示例代碼都將以Maven模塊的方式進行創建,如第2章,模塊的名稱為chapter2,其他章節依次類推。創建之後工程模塊的目錄結構如圖1-8所示。
圖1-4 創建工程
圖1-5 設置Maven工程
圖1-7 配置Module
圖1-8 Maven工程目錄結構
創建項目工程後,修改主工程模塊的pom.xml文件,設置主工程模塊標識、子模塊公共依賴庫等信息(關於pom.xm詳細配置將在第9章中介紹),作為所有子模塊父模塊,如代碼清單1-1所示。
代碼清單1-1 主工程模塊pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="https://maven.apache.org/POM/4.0.0"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.smart</groupId>
<artifactId>chapter</artifactId>
<packaging>pom</packaging>
<version>3.1-SNAPSHOT</version>
<name>Spring3.1</name>
<description>Spring3.1</description>
<properties>
<file.encoding>UTF-8</file.encoding>
<java.version>1.6</java.version>
<org.springframework.version>3.1.1.RELEASE</org.springframework.version>*
<mysql.version>5.1.6</mysql.version>**
…
</properties>
<modules>
<module>chapter1</module>
</modules>
</project>
配置了chapter主工程模塊pom.xml之後,就開始配置在第1章模塊chapter1中生成的pom.xml文件中配置項目工程中需要的依賴相關類庫,如代碼清單1-2所示。
代碼清單1-2 chapter1模塊pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="https://maven.apache.org/POM/4.0.0"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/ xsd/maven-4.0.0.xsd">
<parent>
<groupId>actionspring</groupId>
<artifactId>chapter </artifactId>
<version>3.1-SNAPSHOT</version>
</parent> <!--引用父模塊 -->
<modelVersion>4.0.0</modelVersion>
<artifactId>chapter1</artifactId>
<version>3.1-SNAPSHOT</version>
<name>第一章示例</name>
<description>Spring 快速入門</description>
<packaging>war</packaging>
<dependencies>
<!--依賴的Spring模塊類庫 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version> ${org.springframework.version} </version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version> ${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- 依賴的持久化類庫-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--依賴的公共模塊類庫-->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>${commons-dbcp.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectjweaver.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>com.springsource.org.apache.commons.logging</artifactId>
<version>${apache.commons.version}</version>
</dependency>
<dependency>
<groupId>fakepath</groupId>
<artifactId>com.springsource.net.sf.cglib</artifactId>
<version>1.1.3</version>
</dependency>
<!--依賴的Web模塊類庫-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp-api.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>${standard.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet-api.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
</dependencies>
</project>
配置了主工程模塊 chapter 及第 1 章子模塊chapter1 的模塊信息之後,單擊 IDEA 工程右邊的Maven Projects 選項卡,彈出Maven項目的管理窗口。IDEA提供了非常友好的Maven項目管理界麵,如圖 1-9 所示,單擊管理窗口中的刷新按鈕,可以列出當前所有的Maven模塊。每個模塊都包含兩個子節點Lifecycle及Dependencies,其中Lifecycle子節點下提供常用的Maven操作命令,如清理、驗證、編譯、測試、打包、部署等,Dependencies子節點列出當前模塊所有依賴的類庫。
圖1-9 Maven項目的管理界麵
1.3.3 類包及Spring配置文件規劃
類包規劃
類包以分層的方式進行組織,共劃分為4個包,分別是dao、domain、service和web。領域對象從嚴格意義上講屬於業務層,但由於領域對象可能還同時被持久層和展現層共享,所以一般將其單獨劃分到一個包中,如圖1-10所示。
單元測試的類包和程序的類包對應,但放置在不同的文件夾下,如圖1-11所示。本實例僅對業務層的業務類進行單元測試。將程序類和測試類放置在物理不同的文件夾下,方便將來程序的打包和分發,因為測試類僅在開發時有用,無須包含到部署包中。在本章的後續內容中,讀者將會看到如何用Maven工具進行程序打包,體會這種包及目錄的設計結構所帶來的好處。
實戰經驗
隨著項目規模的增大,這種僅以分層思想規劃的包結構馬上就會顯示出它的不足,一般情況下需要在業務模塊包下,進一步按分層模塊劃分子包,如user/dao、user/service、viewspace/dao、viewspace/service等。對於由若幹獨立的子係統組成的大型應用,在業務分層包的前麵一般還需要加上子係統的前綴。包的規劃對於大型的應用特別重要,它直接關係到應用部署和分發的方便性。
圖1-10 主程序包的規劃
圖1-11 測試包的規劃
Spring配置文件規劃
Spring可以將所有的配置信息統一到一個文件中,也可以放置到多個文件中。對於簡單的應用來說,由於配置信息少,僅用一個配置文件就足以應付。隨著應用規模的擴大,配置信息量的增多,僅僅使用一個配置文件往往難以滿足要求,如果不進行仔細規劃,就會給配置信息的查看和團隊協作帶來負麵影響。
配置文件在團隊協作時是資源爭用的焦點,對於大型的應用一般要按模塊進行劃分,以在一定程度上降低爭用,減少團隊協作的版本控製衝突。因此,應用比較小時,直接采用一個applicationContext.xml配置文件即可。
最後更新:2017-05-31 14:01:49