1.概述
本教程将讨论如何使用Maven设置Spring,并介绍使用Spring依赖项的特定用例。 最新的Spring版本可以在Maven Central上找到。
2.基本的Maven Spring依赖关系
Spring被设计为模块化和灵活的-基本的Spring容器可用于各种场景,而无需包含框架必须提供的任何更高级的功能。 一个非常基本的Maven设置将只需要使用spring-context依赖项:
<properties><org.springframework.version>3.2.4.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 Expression Language (SpEL), Aspect Oriented Programming支持和JavaBeans机制 。
请注意,在定义spring-context依赖项时使用了运行时作用域 -这将确保在任何特定于Spring的API上都没有编译时依赖项。 对于更高级的用例,可以从某些选定的Spring依赖项中删除运行时范围,但是对于更简单的项目, 无需针对Spring进行编译即可充分利用框架。
还要注意,从Spring 3.2开始,已经重新打包了CGLIB依赖关系 (现在已升级到CGLIB 3.0)(所有net.sf.cglib软件包现在都是org.springframework.cglib),并直接内联到spring-core JAR中(请参见JIRA,以获取更多详细信息),因此无需明确定义它。
3. Maven的Spring持久性
除了上面显示的核心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表示Spring中极其灵活的事务管理抽象 。
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 。
5.使用Maven的Spring Security
安全性Maven依赖关系在Spring Security with Maven文章中进行了深入讨论。
6.弹簧测试
可以通过以下依赖项将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项目从github上的一个独立项目开始,已经包含在核心Test Framework中。 这意味着Spring 3.2应用程序应该只使用spring-test依赖项。
对于仍使用Spring 3.1及更低版本的应用程序,较旧的独立Maven依赖关系仍然存在,并且可以用于几乎相同的结果。 但是,该依赖项不在Maven Central上,因此使用它需要将自定义存储库添加到项目的pom中。
7.使用里程碑
Spring的发行版托管在Maven Central中。 但是,如果项目需要使用里程碑版本,则需要将自定义Spring存储库添加到pom:
<repositories><repository><id>repository.springframework.maven.milestone</id><name>Spring Framework Maven Milestone Repository</name><url>http://maven.springframework.org/milestone</url></repository>
</repositories>
已经定义了一个此存储库,项目可以定义依赖项,例如:
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>3.2.0.RC2</version>
</dependency>
8.使用快照
与里程碑类似,快照托管在自定义存储库中:
<repositories><repository><id>repository.springframework.maven.snapshot</id><name>Spring Framework Maven Snapshot Repository</name><url>http://maven.springframework.org/snapshot</url></repository>
</repositories>
在pom中启用SNAPSHOT存储库后,可以引用以下依赖项:
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>3.3.0.BUILD-SNAPSHOT</version>
</dependency>
乃至:
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.0.0.BUILD-SNAPSHOT</version>
</dependency>
9.结论
本文讨论了将Spring与Maven结合使用的实际细节。 这里介绍的Maven依赖关系当然是一些主要的依赖关系,还有其他一些值得一提并且还没有削减的依赖关系。 不过,这应该是在项目中使用Spring的良好起点。
翻译自: https://www.javacodegeeks.com/2013/04/spring-with-maven.html