使用Maven配置Spring

qianmoQ發表於2019-01-19

這篇文章說明了如何通過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>

相關文章