跟隨慕課網「Java 高併發秒殺 API」課程,從零手搭 SSM(Spring + Spring MVC + MyBatis)項目。本文記錄項目初始化全過程,含 Maven 命令、目錄結構、pom.xml 全量依賴、IDE 導入坑點。
mvn archetype:generate \ -DgroupId=org.seckill \ -DartifactId=seckill \ -DarchetypeArtifactId=maven-archetype-webapp \ -DarchetypeCatalog=local
archetype:generate:固定命令groupId:組織標識(包名前綴)artifactId:項目名稱archetypeArtifactId:maven-archetype-webapp 生成 Web 項目結構archetypeCatalog=local:使用本地原型目錄,加快生成Maven-webapp 預設缺少 Java 源碼與測試目錄,需手動創建:
src/main/java # 主代碼 src/main/resources # 配置文件 src/test/java # 測試代碼 src/test/resources # 測試資源
最終結構:
seckill ├── src │ ├── main │ │ ├── java │ │ ├── resources │ │ └── webapp │ │ └── WEB-INF │ │ └── web.xml │ └── test │ ├── java │ └── resources └── pom.xml
Maven 生成的 web.xml 默認 2.3 版,不支援 EL 表達式與註解配置,必須替換為 3.0:
<web-app xmlns="https://java.sun.com/xml/ns/javaee"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://java.sun.com/xml/ns/javaee
https://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0" metadata-complete="true">
<!-- 配置內容 -->
</web-app>
<dependencies>
<!-- 測試 -->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency>
<!-- 日誌:SLF4J + Logback -->
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.12</version></dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.1.1</version></dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.1.1</version></dependency>
<!-- 數據庫 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.35</version><scope>runtime</scope></dependency>
<dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency>
<!-- MyBatis -->
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.3.0</version></dependency>
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.3</version></dependency>
<!-- Servlet/Web -->
<dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency>
<dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.5.4</version></dependency>
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency>
<!-- Spring 核心 -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.1.7.RELEASE</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.1.7.RELEASE</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.1.7.RELEASE</version></dependency>
<!-- Spring DAO/JDBC/TX -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.1.7.RELEASE</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>4.1.7.RELEASE</version></dependency>
<!-- Spring Web/MVC -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.1.7.RELEASE</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.1.7.RELEASE</version></dependency>
<!-- Spring Test -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.1.7.RELEASE</version></dependency>
<!-- Redis & 序列化 -->
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.3</version></dependency>
<dependency><groupId>com.dyuproject.protostuff</groupId><artifactId>protostuff-core</artifactId><version>1.0.8</version></dependency>
<dependency><groupId>com.dyuproject.protostuff</groupId><artifactId>protostuff-runtime</artifactId><version>1.0.8</version></dependency>
<!-- 工具 -->
<dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.1</version></dependency>
</dependencies>
settings.xml 與 Maven home,勾選「Import Maven projects automatically」。依賴配置完成後,下一步將進入 DAO 層設計:MyBatis 映射文件、實體類、Mapper 接口與 Spring 整合配置。