共计 3235 个字符,预计需要花费 9 分钟才能阅读完成。
这篇文章说明了如何通过 Maven 配置 Spring 依赖项。最新的 Spring 版本可以在 Maven Central 上找到。
Maven 中的 Spring 基本依赖关系
Spring 的设计是高度模块化的 – 使用 Spring 的一部分不应该而且不需要另一部分。例如,基本的 Spring Context 可以没有 Persistence 或 MVC Spring 库。
让我们先从一个基本 Maven 配置,将只使用了 spring-context 依赖:
<properties>
<org.springframework.version>3.2.8.RELEASE</org.springframework.version>
<!– <org.springframework.version>4.0.2.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 Injection Container,并且有少量的依赖项:spring-core,spring-expression,spring-aop 和 spring-beans。通过支持一些核心 Spring 技术来扩充容器:Core Spring 实用程序,Spring 表达式语言(SpEL),面向对象编程支持和 JavaBeans 机制。
注意我们在运行时范围中定义了依赖关系 - 这将确保在任何特定于 Spring 的 API 上没有编译时依赖性。对于更高级的用例,可以从一些选定的 Spring 依赖项中删除运行时范围,但是对于更简单的项目,不需要针对 Spring 进行编译以充分利用该框架。
另请注意,从 Spring 3.2 开始,不需要定义 CGLIB 依赖项(现在已升级到 CGLIB 3.0)– 它已被重新打包(所有 net.sf.cglib 包现在是 org.springframework.cglib)并且直接在内部内联 spring-core JAR(有关其他详细信息,请参阅 JIRA)。
Maven 配置 Spring Persistence
现在让我们看一下 Spring Persistence 依赖关系 – 主要是 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 代表了极其灵活的事务管理抽象。
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。
使用 maven 配置 Spring Security
在使用 Maven 配置 Spring Security 文章中深入讨论了 Maven 配置 Spring Security 依赖关系。
使用 Maven 配置 Spring Test
Spring Test Framework 可以通过以下依赖项包含在项目中:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
从 Spring 3.2 开始,Spring MVC Test 项目已经包含在核心测试框架中 – 因此包括 spring-test 依赖就足够了。
使用 Milestones
Spring 的发布版本托管在 Maven Central 上。但是,如果项目需要使用 Milestones 版本,则需要将自定义 Spring 存储库添加到 pom 中:
<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>3.2.0.RC2</version>
</dependency>
使用 Snapshots
与 Milestones 类似,Snapshots 托管在自定义存储库中:
<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>3.3.0.BUILD-SNAPSHOT</version>
</dependency>
对于 4.x:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.3.BUILD-SNAPSHOT</version>
</dependency>