1. 概述
本教程向您展示如何通过 Maven 管理 Spring 的依赖关系.最新的Spring版本可以在  Maven Central仓库  中找到. 也可以访问   mvnrepository:org.springframework .

2. 使用Maven管理基本的Spring依赖关系 
Spring被设计为可高度模块化的 —— 使用Spring中的一部分,不应该也不需要引用另一个不相关的部分. 例如, 使用基本的Spring Context可以不使用 Persistence或MVC相关的Spring库.
让我们从一个非常简单的Maven设置开始,这里只使用  spring-context  依赖 :

[html] view plaincopy
  1. <properties>
  2. <org.springframework.version>3.2.8.RELEASE</org.springframework.version>
  3. <!-- <org.springframework.version>4.0.2.RELEASE</org.springframework.version> -->
  4. </properties>
  5. <dependency>
  6. <groupId>org.springframework</groupId>
  7. <artifactId>spring-context</artifactId>
  8. <version>${org.springframework.version}</version>
  9. <scope>runtime</scope>
  10. </dependency>

spring-context 包定义了Spring注入(Injection)容器,并依赖很少的Spring包: spring-core, spring-expression, spring-aop 和 spring-beans. 通过启用支持一些 Spring的核心技术增强了Spring容器:  Spring表达式语言 (SpEL) ,  面向切面编程  支持以及  JavaBeans机制 .
注意,我们将spring-context依赖的范围指定为  runtime scope  —— 这将确保在编译时没有任何依赖Spring特定api的部分. 对于一些底层开发的情况,可以将 runtime scope 从选定的Spring依赖项中移除(Maven 默认是compile),但对于简单的项目来说,并不需要在编码时对Spring 的整个框架进行调用.
还要注意,从Spring 3.2开始,  不需要定义CGLIB 依赖关系 (现在升级到了CGLIB3.0)—— 它已经被重新打包(现在所有 net.sf.cglib 包变成了 org.springframework.cglib包)并直接集成在 spring-core 这个 JAR包中(详情请参考  JIRA计划文档 ).

3. Spring Persistence与Maven
现在让我们看看 Spring持久化依赖项 —— 主要是 spring-orm :

[html] view plaincopy
  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-orm</artifactId>
  4. <version>${org.springframework.version}</version>
  5. </dependency>

它提供了Hibernate和JPA支持,如  HibernateTemplate  和  JpaTemplate  —— 以及持久性相关的一些依赖关系: spring-jdbc 和 spring-tx.
JDBC Data Access库定义了  Spring JDBC支持  以及 JdbcTemplate, 而 spring-tx 代表了非常灵活的  事务管理的抽象 (Transaction Management Abstraction).

4. Spring MVC与Maven
要使用Spring Web和Servlet支持,需要在pom中添加两个依赖项, 当然,也需要上面所说的核心依赖:

[html] view plaincopy
  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-web</artifactId>
  4. <version>${org.springframework.version}</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework</groupId>
  8. <artifactId>spring-webmvc</artifactId>
  9. <version>${org.springframework.version}</version>
  10. </dependency>

spring-web 依赖包含Servlet和Portlet环境中常用的web特定工具,而  spring-webmvc 对Servlet环境提供了MVC支持 .
因为 spring-webmvc 将 spring-web 作为一个依赖,所以在使用 spring-webmvc时不需要显式地定义 spring-web.

5. Spring Security与Maven
关于 Security Maven依赖的深入讨论请参考  Spring Security 3.2.x与Spring 4.0.x的Maven依赖管理 .

6. Spring Test与Maven
Spring Test框架可以通过以下依赖引入到项目中:

[html] view plaincopy
  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-test</artifactId>
  4. <version>${spring.version}</version>
  5. <scope>test</scope>
  6. </dependency>

从Spring 3.2开始, Spring MVC Test项目  作为一个独立的项目 在github上提供下载  ,并且已被列入 core Test框架,只需要依赖 spring-test 就够了.
注意,那些仍然依赖Spring 3.1及以下版本的较老的项目,独立的旧的Maven依赖 仍然存在并可继续使用 ,几乎是一样的结果. 但不是在Maven Central仓库中,所以使用他们需要添加一个自定义仓库到项目的pom中.

7. 使用里程碑版本(Milestones)
Spring的release版本托管在Maven中央仓库中. 但是,如果一个项目需要使用里程碑版本,那么需要在pom中添加Spring自己的Maven库:

[html] view plaincopy
  1. <repositories>
  2. <repository>
  3. <id>repository.springframework.maven.milestone</id>
  4. <name>Spring Framework Maven Milestone Repository</name>
  5. <url>http://repo.spring.io/milestone/</url>
  6. </repository>
  7. </repositories>

添加这个仓库以后,项目就可以定义如下的依赖关系:

[html] view plaincopy
  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-core</artifactId>
  4. <version>3.2.0.RC2</version>
  5. </dependency>

8. 使用Snapshots(快照)
和milestons版本一样, Spring的快照版也托管在自己的仓库中:

[html] view plaincopy
  1. <repositories>
  2. <repository>
  3. <id>repository.springframework.maven.snapshot</id>
  4. <name>Spring Framework Maven Snapshot Repository</name>
  5. <url>http://repo.spring.io/snapshot/</url>
  6. </repository>
  7. </repositories>

只要在pom中启用了 SNAPSHOT 仓库,就可以引用以下的依赖关系:

[html] view plaincopy
  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-core</artifactId>
  4. <version>3.3.0.BUILD-SNAPSHOT</version>
  5. </dependency>

当然, 4.x 也是一样的:

[html] view plaincopy
  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-core</artifactId>
  4. <version>4.0.3.BUILD-SNAPSHOT</version>
  5. </dependency>

9. 总结

本文讨论了使用Maven管理 Spring的实际情况. 主要介绍的是Maven依赖,还有其他一些知识点. 这应该是在项目中使用Spring的一篇很好的入门文章.

使用Maven管理Spring相关推荐

  1. Spring入门(四):使用Maven管理Spring项目

    让我们先回顾下本系列的前3篇博客: Spring入门(一):创建Spring项目 Spring入门(二):自动化装配bean Spring入门(三):通过JavaConfig装配bean 1.为什么要 ...

  2. 在Eclipse中使用Maven构建Spring项目

    最新版的Spring需要使用Maven构建,本文讲述怎么在Eclipse构建Maven项目,以配置Spring项目为例. maven简单介绍 maven是构建工具,也是构建管理工具.ant只是构建工具 ...

  3. IntelliJ IDEA 12创建Maven管理的Java Web项目(图解)

    2019独角兽企业重金招聘Python工程师标准>>> 本文主要使用图解介绍了使用IntelliJIDEA 12创建Maven管理的Java Web项目的过程. 本文PDF文档下载地 ...

  4. Spring Boot Admin –用于管理Spring Boot应用程序的Admin UI

    作为微服务开发的一部分,我们许多人都将Spring Boot与Spring Cloud功能一起使用. 在微服务领域,我们将有许多Spring Boot应用程序将在相同/不同的主机上运行. 如果将Spr ...

  5. Java工作笔记-使用Maven创建Spring Boot并生成war包外部tocamt运行

    目录 基本概念 代码与实例 基本概念 目前发现很多Java项目都是直接使用Maven作项目管理,在Maven中配置依赖,比如Spring boot完成操作,在经历了这么多操作后,还发现大家喜欢把Mav ...

  6. Eclipse Maven构建Spring MVC项目

    工作中项目开发使用Maven管理项目的构建.打包.编译,框架採用的是Spring MVC框架,而且实现了多模块.多项目的管理.自己也简单的參与了架构的设计.对于刚開始学习的人来说,使用Maven构建项 ...

  7. 【转】淮左白衣-解决maven管理SSM中mybatis的mapper文件扫描失败的问题

    本文链接: https://blog.csdn.net/youngyouth/article/details/86468910 好久没有写博客了,11月底来到公司实习,上个月写个小demo,趁此回顾下 ...

  8. 用maven创建Spring MVC项目

    用maven创建Spring MVC项目 mvn archetype:generate -DgroupId=fry-arthur -DartifactId=spring-mvc-study -Darc ...

  9. maven下载spring

    maven下载spring - Spring,maven - Java - ITeye论坛 首先感谢博客园的大师Fangjins,看他的博客收益良多,在下只是在大师的解惑和借鉴下完成这篇文章. 喜欢被 ...

最新文章

  1. msdn画圆弧函数_复变函数与积分变换 简明笔记(八):保形映射(共形映射)
  2. 词汇的理解 —— 汉译英(术语)
  3. 【iptables】编写iptables防火墙规则-1
  4. Python的注释及乱码 || 变量及类型
  5. hdu 1874畅通工程续(基础Floyd)
  6. IIS7 + Tomcat7 整合共用80端口
  7. 在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符
  8. MapReduce-流量统计求和-Reducer和JobMain代码编写
  9. Cef mysql.exe_CEF3.2623使用记录:windows编译
  10. Java中文乱码问题(转)
  11. oracle having(),Oracle HAVING子句
  12. qt linux下实现vlc视频,vlc音视频开发(一)环境搭建(qt篇)
  13. “有 些 事 当 了 程 序 员 才 懂”
  14. yii和php的一些细节
  15. 在html标签中写css样式,html style样式标签元素教程
  16. gitee如何搭建mysql_Gitee的下载安装配置及使用步骤详解
  17. 6种最好的图片无损压缩工具
  18. golang 如何识别不同语言
  19. Tensorflow操作与函数全面解析
  20. nginx出现403错误的解决方法(亲测有效)

热门文章

  1. WEB应用程序逻辑架构
  2. python编程快速入门例子-清华大学出版社-图书详情-《Python编程入门与案例详解》...
  3. python入门基础知识教程-Python基础知识入门,这三个原则是你要知道的,还有教程...
  4. python基础知识思维导图-总结 Python 知识点思维导图
  5. 2!=5 or 0在python中是否正确-python 中 and or
  6. python3.7和3.8的区别-Python 3.8 新功能来一波(大部分人都不知道)
  7. python多线程爬虫实例-Python多线程在爬虫中的应用
  8. python stm32-实现Python与STM32通信方式
  9. python画笑脸-用Python画滑稽
  10. 用python绘制漂亮的图形-用Python代码绘制漂亮的生日蛋糕,python