Spring 与 Maven
1.概述
本教程说明了如何通过 Maven 设置Spring 依赖项。可以在Maven Central 上找到最新的 Spring 版本。
2. Maven 的基本 Spring 依赖
Spring 被设计为高度模块化——使用 Spring 的一部分不应该也不需要另一部分。例如,基本的 Spring 上下文可以没有 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 机制 。
请注意,我们在runtime scope内定义依赖关系——这将确保没有对任何 Spring 特定 API 的编译时依赖关系。对于更高级的用例,runtime scope可能会从某些选定的 Spring 依赖项中移除,但对于更简单的项目,无需针对 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. 使用 Maven 的 Spring MVC
要使用 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 开始,为了支持 reactive-stack web 框架,我们可以添加对Spring WebFlux 的依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webflux</artifactId>
<version>${org.springframework.version}</version>
</dependency>
5. 使用 Maven 的 Spring Security
Security Maven 依赖项在Spring Security with 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>