Maven的春天
1.概述
本教程將討論如何使用Maven設(shè)置Spring,并介紹使用Spring依賴項(xiàng)的特定用例。 最新的Spring版本可以在Maven Central上找到。
2.基本的Maven Spring依賴關(guān)系
Spring被設(shè)計(jì)為模塊化和靈活的-基本的Spring容器可用于各種場景,而無需包含框架必須提供的任何更高級的功能。 一個非常基本的Maven設(shè)置將只需要使用spring-context依賴項(xiàng):
<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>此依賴關(guān)系(即spring-context )定義了實(shí)際的Spring Injection Container,并具有少量依賴關(guān)系: spring-core , spring-expression , spring-aop和spring-beans 。 這些通過啟用對某些Spring核心技術(shù)的支持來增強(qiáng)容器:Core Spring實(shí)用程序, Spring Expression Language (SpEL), Aspect Oriented Programming支持和JavaBeans機(jī)制 。
請注意,在定義spring-context依賴項(xiàng)時使用了運(yùn)行時作用域 -這將確保在任何特定于Spring的API上都沒有編譯時依賴項(xiàng)。 對于更高級的用例,可以從某些選定的Spring依賴項(xiàng)中刪除運(yùn)行時范圍,但是對于更簡單的項(xiàng)目, 無需針對Spring進(jìn)行編譯即可充分利用框架。
還要注意,從Spring 3.2開始,已經(jīng)重新打包了CGLIB依賴關(guān)系 (現(xiàn)在已升級到CGLIB 3.0)(所有net.sf.cglib軟件包現(xiàn)在都是org.springframework.cglib),并直接內(nèi)聯(lián)到spring-core JAR中(請參見JIRA,以獲取更多詳細(xì)信息),因此無需明確定義它。
3. Maven的Spring持久性
除了上面顯示的核心Spring依賴項(xiàng)之外,主要的Spring持久性依賴項(xiàng)是spring-orm :
<dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${org.springframework.version}</version> </dependency>這帶來了Hibernate和JPA支持-例如HibernateTemplate和JpaTemplate-以及一些與持久性相關(guān)的其他依賴項(xiàng): spring-jdbc和spring-tx 。 JDBC數(shù)據(jù)訪問庫定義了Spring JDBC支持以及JdbcTemplate ,并且spring-tx表示Spring中極其靈活的事務(wù)管理抽象 。
4.帶有Maven的Spring MVC
要使用Spring Web和Servlet支持,除了上面的核心依賴關(guān)系之外,pom還需要包含兩個依賴關(guān)系:
<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依賴項(xiàng)包含用于Servlet和Portlet環(huán)境的通用的Web特定實(shí)用程序,而spring-webmvc啟用對Servlet環(huán)境的MVC支持 。 由于spring-webmvc將spring-web作為依賴項(xiàng),因此在使用spring-webmvc時不需要顯式定義spring-web 。
5.使用Maven的Spring Security
安全性Maven依賴關(guān)系在Spring Security with Maven文章中進(jìn)行了深入討論。
6.彈簧測試
可以通過以下依賴項(xiàng)將Spring Test Framework包含在項(xiàng)目中:
<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version><scope>test</scope> </dependency>從Spring 3.2開始,Spring MVC Test項(xiàng)目從github上的一個獨(dú)立項(xiàng)目開始,已經(jīng)包含在核心Test Framework中。 這意味著Spring 3.2應(yīng)用程序應(yīng)該只使用spring-test依賴項(xiàng)。
對于仍使用Spring 3.1及更低版本的應(yīng)用程序,較舊的獨(dú)立Maven依賴關(guān)系仍然存在,并且可以用于幾乎相同的結(jié)果。 但是,該依賴項(xiàng)不在Maven Central上,因此使用它需要將自定義存儲庫添加到項(xiàng)目的pom中。
7.使用里程碑
Spring的發(fā)行版托管在Maven Central中。 但是,如果項(xiàng)目需要使用里程碑版本,則需要將自定義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>已經(jīng)定義了一個此存儲庫,項(xiàng)目可以定義依賴項(xiàng),例如:
<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存儲庫后,可以引用以下依賴項(xiàng):
<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.結(jié)論
本文討論了將Spring與Maven結(jié)合使用的實(shí)際細(xì)節(jié)。 這里介紹的Maven依賴關(guān)系當(dāng)然是一些主要的依賴關(guān)系,還有其他一些值得一提并且還沒有削減的依賴關(guān)系。 不過,這應(yīng)該是在項(xiàng)目中使用Spring的良好起點(diǎn)。
翻譯自: https://www.javacodegeeks.com/2013/04/spring-with-maven.html
總結(jié)
- 上一篇: 可燃物有哪些 盘点可燃物有哪些
- 下一篇: 小型Hadoop集群的Ganglia配置