目錄
- 概述
- 使用 Maven 構建基本 Spring 依賴
- Spring 持久層依賴與 Maven
- Spring MVC 依賴與 Maven
- Spring Security 依賴與 Maven
- Spring Test 依賴與 Maven
- 使用里程碑版本
- 使用快照版本
- 結論
1. 概述
本教程演示瞭如何通過 Maven 設置 Spring 依賴。最新版本的 Spring 可以從 Maven Central 下載。
2. 使用 Maven 的基本 Spring 依賴項
Spring 設計為高度模塊化——使用 Spring 的一部分不應並且不要求使用其他部分。例如,基本的 Spring Context 可以不使用 Persistence 或 MVC Spring 庫。
讓我們從一個基本的 Maven 設置開始,它只會使用 spring-context 依賴項。
<properties>
<org.springframework.version>5.2.8.RELEASE</org.springframework.version>
</properties>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
<scope>runtime</scope>
</dependency>這個依賴項——spring-context——定義了實際的 Spring 注入容器,並且具有少量依賴項:spring-core, spring-expression, spring-aop, 和 spring-beans。它們通過啓用對一些 核心 Spring 技術 的支持,增強了容器:核心 Spring 工具、Spring 表達式語言 (SpEL)、面向切面編程 支持 以及 JavaBeans 機制。
請注意,我們定義了依賴項的範圍為 運行時 範圍——這可以確保沒有編譯時依賴於任何 Spring 特定 API。對於更高級的用例,可以選擇性地從某些 Spring 依賴項中移除 運行時 範圍,但對於更簡單的項目,無需編譯以充分利用框架。
此外,請注意 JDK 8 是 Spring 5.2 的最低 Java 版本要求。它還支持 JDK 11 作為當前的 LTS 分支,以及 JDK 13 作為最新的 OpenJDK 發佈版本。
3. 使用 Maven 進行 Spring 持久性
現在,讓我們來探討 Spring 持久性依賴項 – 主要為 spring-orm。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework.version}</version>
</dependency>此功能集包含 Hibernate 和 JPA 支持,例如 HibernateTemplate 和 JpaTemplate,以及一些額外的與持久化相關的依賴項:spring-jdbc 和 spring-tx。
JDBC 數據訪問庫定義了 Spring JDBC 支持,以及 JdbcTemplate,而 spring-tx 則代表了極其靈活的 事務管理抽象。
4. 使用 Spring MVC 與 Maven
為了使用 Spring Web 和 Servlet 支持,需要將以下兩個依賴項包含在 pom 中,此外還需要包含上述核心依賴項:
<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>spring-web 依賴包含針對 Servlet 和 Portlet 環境的常見 Web 特定實用工具,而 spring-webmvc 則為 Servlet 環境啓用 MVC 支持。
由於 spring-webmvc 依賴於 spring-web ,因此在使用 spring-webmvc 時,顯式定義 spring-web 是不必要的。
從 Spring 5.0 開始,為了支持反應式 Web 框架,我們可以添加對 Spring WebFlux 的依賴。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webflux</artifactId>
<version>${org.springframework.version}</version>
</dependency>
5. 使用 Maven 進行 Spring 安全
在“使用 Maven 進行 Spring 安全”文章中,深入探討了 Maven 安全依賴項。
6. 使用 Maven 進行 Spring 測試
可以通過以下依賴項將 Spring 測試框架包含到項目中:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>使用 Spring 5,我們可以執行併發測試。
7. 使用里程碑版本
Spring 的里程碑版本託管在 Maven Central 上。但是,如果一個項目需要使用里程碑版本,則需要在 pom 中添加一個自定義的 Spring 倉庫:
<repositories>
<repository>
<id>repository.springframework.maven.milestone</id>
<name>Spring Framework Maven Milestone Repository</name>
<url>http://repo.spring.io/milestone/</url>
</repository>
</repositories>一旦該倉庫被定義好,項目就可以定義諸如以下依賴關係:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.0-M1</version>
</dependency>8. 使用快照
類似於里程碑,快照也存儲在自定義倉庫中:
<repositories>
<repository>
<id>repository.springframework.maven.snapshot</id>
<name>Spring Framework Maven Snapshot Repository</name>
<url>http://repo.spring.io/snapshot/</url>
</repository>
</repositories>一旦在 pom.xml 中啓用 SNAPSHOT 倉庫,就可以引用以下依賴項:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.3.BUILD-SNAPSHOT</version>
</dependency>作為 5.x 的一部分,還包括:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.0-SNAPSHOT</version>
</dependency>9. 結論
本文討論了使用 Spring 與 Maven 的實際細節。此處提供的 Maven 依賴項當然是其中一些主要依賴項,但還有其他一些依賴項值得一提,目前尚未被納入其中。然而,這仍然是一個良好的起點,可以用於在項目中應用 Spring。