如何在MAVEN中配置Spring的依賴包

菜雞03號發表於2016-09-06

1. 介紹

這篇文件介紹如何在Maven中配置Spring依賴,最新的Spring釋出版可以在Maven倉庫中找到。

2. 在Maven中Spring的基礎配置

Spring是高度模組化的,可以單獨使用Spring的某個庫而不需要依賴Spring的其他庫。比如,使用Spring Context庫不需要依賴Spring Persistence或者Spring MVC庫。

讓我們先從最簡單開始,在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>
  <dependencies>
  <!-- spring的依賴包 -->
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${org.springframework.version}</version>
    <scope>runtime</scope>
  </dependency>

上例定義的對spring-context的依賴,spring-context實現了Spring注入容器並且依賴:spring-core,spring-expression,spring-aop以及spring-beans。這些依賴包使容器可以支援Spring的一些核心技術:Spring核心元件,Spring EL表示式 (SpEL)面向切面程式設計,JavaBean機制

注意,我們在runtime範圍定義這個依賴,因此需求確定在編譯期間不需要依賴相關Spring特定的API。在一些高階應用場景下,一些Spring依賴項可以不用配置runtime範圍,但是在目前比較簡單的專案場景下,不需要針對Spring編譯專案去獲得整個框架的全部功能。

同樣要注意的是,從Spring 3.2開始不需要定義CGLIB依賴(目前的版本是CGLIB 3.0)。現在使用內嵌在spring-core JAR(更多詳細資訊可以檢視相關[JIRA]https://jira.springsource.org/browse/SPR-9669("JIRA")中的cglib包(net.sf.cglib現在使用org.springframework.cglib替代)。

3. 在Maven配置Spring持久化框架

現在來看看Spring持久化框架的配置(主要是spring-orm

<!-- spring的持久層依賴 -->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>${org.springframework.version}</version>
</dependency>

上面的配置增加了Hibernate和JPA功能支援,比如HibernateTemplateJpaTemplate以及一些額外的持久化相關的依賴:spring-jdbcspring-tx

在JDBC資料訪問庫定義Spring JDBC支援以及JdbcTemplate,Spring-tx提供了非常靈活的事務管理抽象。

4. 在Maven配置Spring MVC

要增加Spring Web和Servlet支援,需要在上面已配置的pom檔案中額外增加兩個依賴:

<div><!-- springMVC依賴 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${org.springframework.version}</version>
</dependency></div><div>
</div><div><dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${org.springframework.version}</version>
</dependency></div>

spring-web包包含Servlet和Portlet所需要通用元件spring-webmvc則在Servlet環境中啟用MVC支援。

由於spring-webmvc依賴於spring-web,所以定義了spring-webmvc依賴後,可以不用顯示的在pom定義spring-web

相關文章