这篇文章说明了如何经过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>