这篇文档介绍如何在Maven中配置Spring依赖,最新的Spring发布版可以在Maven仓库中找到。
Spring是高度模块化的,可以单独使用Spring的某个库而不需要依赖Spring的其他库。比如,使用Spring Context库不需要依赖Spring Persistence或者Spring MVC库。
让我们先从最简单开始,在Maven中配置spring-context
依赖:
上例定义的对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
替代)。
现在来看看Spring持久化框架的配置(主要是spring-orm
)
上面的配置增加了Hibernate和JPA功能支持,比如HibernateTemplate
和JpaTemplate
以及一些额外的持久化相关的依赖:spring-[jdbc](http://cpro.baidu.com/cpro/ui/uijs.phpadclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=17&is_app=0&jk=3d45aa11f293549f&k=jdbc&k0=jdbc&kdi0=0&luki=5&n=10&p=baidu&q=55082150_cpr&rb=0&rs=1&seller_id=1&sid=9f5493f211aa453d&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1933315&u=http%3A%2F%2Fwww%2E4byte%2Ecn%2Flearning%2F119966%2Fru%2Dhe%2Dzai%2Dmaven%2Dzhong%2Dpei%2Dzhi%2Dspring%2Dyi%2Dlai%2Ehtml&urlid=0)
和spring-tx
在JDBC数据访问库定义Spring JDBC支持以及JdbcTemplate,Spring-tx提供了非常灵活的事务管理抽象。
要增加Spring Web和Servlet支持,需要在上面已配置的pom
文件中额外增加两个依赖:
spring-web
包包含Servlet和Portlet所需要通用组件,spring-webmvc
则在Servlet环境中启用MVC支持。
由于spring-webmvc
依赖于spring-web
,所以定义了spring-webmvc
依赖后,可以不用显示的在pom
定义spring-web
。
这个部分在如何在Maven中配置Spring Security依赖中介绍了,请参考这篇文章。
可以通过下面的依赖配置将Spring Test引入项目
org.springframework spring-test ${spring.version} test从Spring 3.2开始,Spring MVC Test项目已经被包含到核心的Spring Test框架中(原来是一个独立项目,项目托管在GitHub)。所以,从Spring 3.2开始,仅需要在依赖配置中配置spring-test
依赖即可。
注意:对于使用Spring 3.1及以下版本的应用来说,独立的[spring](http://cpro.baidu.com/cpro/ui/uijs.phpadclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=17&is_app=0&jk=3d45aa11f293549f&k=spring&k0=spring&kdi0=0&luki=10&n=10&p=baidu&q=55082150_cpr&rb=0&rs=1&seller_id=1&sid=9f5493f211aa453d&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1933315&u=http%3A%2F%2Fwww%2E4byte%2Ecn%2Flearning%2F119966%2Fru%2Dhe%2Dzai%2Dmaven%2Dzhong%2Dpei%2Dzhi%2Dspring%2Dyi%2Dlai%2Ehtml&urlid=0)-[mvc](http://cpro.baidu.com/cpro/ui/uijs.phpadclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=17&is_app=0&jk=3d45aa11f293549f&k=mvc&k0=mvc&kdi0=0&luki=9&n=10&p=baidu&q=55082150_cpr&rb=0&rs=1&seller_id=1&sid=9f5493f211aa453d&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1933315&u=http%3A%2F%2Fwww%2E4byte%2Ecn%2Flearning%2F119966%2Fru%2Dhe%2Dzai%2Dmaven%2Dzhong%2Dpei%2Dzhi%2Dspring%2Dyi%2Dlai%2Ehtml&urlid=0)-test
依赖还是可以使用的,可以参考这里进行配置。但是,这个依赖已经不再Maven的中央库中,所以如果需要增加依赖需要配置自定义Maven容器。
Spring的最新稳定版本保存在Maven的中央库,如果项目需要使用Spring的里程碑版本,需要在pom
中配置自定义容器:
当容器配置完成后,项目就可以像下面示例一样定义依赖了:
org.springframework spring-core 3.2.0.RC2与里程碑版本一样,快照版本也需要配置自定义容器位置:
repository.[spring](http://cpro.baidu.com/cpro/ui/uijs.phpadclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=17&is_app=0&jk=3d45aa11f293549f&k=spring&k0=spring&kdi0=0&luki=10&n=10&p=baidu&q=55082150_cpr&rb=0&rs=1&seller_id=1&sid=9f5493f211aa453d&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1933315&u=http%3A%2F%2Fwww%2E4byte%2Ecn%2Flearning%2F119966%2Fru%2Dhe%2Dzai%2Dmaven%2Dzhong%2Dpei%2Dzhi%2Dspring%2Dyi%2Dlai%2Ehtml&urlid=0)framework.maven.snapshot SpringFrameworkMavenSnapshotRepository http://repo.spring.io/snapshot/当快照容器位置配置完成后,下面的依赖配置就可以使用了:
org.springframework spring-core 3.3.0.BUILD-SNAPSHOT对于4.x版本也是一样的:
org.springframework [spring](http://cpro.baidu.com/cpro/ui/uijs.phpadclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=17&is_app=0&jk=3d45aa11f293549f&k=spring&k0=spring&kdi0=0&luki=10&n=10&p=baidu&q=55082150_cpr&rb=0&rs=1&seller_id=1&sid=9f5493f211aa453d&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1933315&u=http%3A%2F%2Fwww%2E4byte%2Ecn%2Flearning%2F119966%2Fru%2Dhe%2Dzai%2Dmaven%2Dzhong%2Dpei%2Dzhi%2Dspring%2Dyi%2Dlai%2Ehtml&urlid=0)\-core 4.0.3.BUILD-SNAPSHOT这篇文章讨论了如何在Maven配置Spring的一些细节,这里介绍了一些主要的Maven依赖管理内容,当然还存在一些没有讨论到的内容,不过这篇文章应该是在项目中使用Spring的一个好的起点。
原文:Spring with Maven