使用Maven管理Spring[转]
原文链接: Spring with Maven
原文日期: 2013年04月17日
翻译日期: 2014年06月29日
翻译人员: 铁锚
翻译原文连接:http://blog.csdn.net/renfufei/article/details/35794985
1. 概述
本教程向您展示如何通过 Maven 管理 Spring 的依赖关系.最新的Spring版本可以在 Maven Central仓库 中找到. 也可以访问 mvnrepository:org.springframework.
2. 使用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)容器,并依赖很少的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 :
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-orm</artifactId>
- <version>${org.springframework.version}</version>
- </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中添加两个依赖项, 当然,也需要上面所说的核心依赖:
- <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.
5. Spring Security与Maven
关于 Security Maven依赖的深入讨论请参考 Spring Security 3.2.x与Spring 4.0.x的Maven依赖管理.
6. Spring Test与Maven
Spring Test框架可以通过以下依赖引入到项目中:
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>${spring.version}</version>
- <scope>test</scope>
- </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库:
- <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>
8. 使用Snapshots(快照)
和milestons版本一样, Spring的快照版也托管在自己的仓库中:
- <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中启用了 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>
9. 总结
本文讨论了使用Maven管理 Spring的实际情况. 主要介绍的是Maven依赖,还有其他一些知识点. 这应该是在项目中使用Spring的一篇很好的入门文章.
使用Maven管理Spring[转]的更多相关文章
- 使用Maven管理Spring
原文链接: Spring with Maven原文日期: 2013年04月17日翻译日期: 2014年06月29日翻译人员: 铁锚 1. 概述本教程向您展示怎样通过 Maven 管理 Spring 的 ...
- Spring入门(四):使用Maven管理Spring项目
让我们先回顾下本系列的前3篇博客: Spring入门(一):创建Spring项目 Spring入门(二):自动化装配bean Spring入门(三):通过JavaConfig装配bean 1.为什么要 ...
- maven增加Spring
对于javax.annotation,spring某些注解要用的,比如:@Resource. 使用Maven管理基本的Spring依赖关系 Spring被设计为可高度模块化的 —— 使用Sprin ...
- 使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(二)
前言:在使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(一)中已经介绍了如何对web基础环境进行搭建,这里主要演示,如何对spring环境进行搭建,然后 ...
- 使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(一)
前言:原来一直使用MyEclipse,换工作后,新公司使用IDEA,初识IDEA发现,哇,它的快捷键可真多啊,但是一路用下来,觉得非常的好用,特别是利用Maven管理,那简直叫一个爽.当然笔者在使用过 ...
- IDEA一步步创建Maven管理的Spring入门程序
目前,做Java开发的很多人都在使用IDEA了,而有些人也选择用Eclipse,我这里介绍一下IDEA一步步创建Maven项目的步骤,并创建一个Spring的入门程序(Java项目,非Web项目),讲 ...
- Maven 整合 spring profile实现多环境自动切换
Maven 整合 spring profile实现多环境自动切换 时间:2014-03-19 15:32来源:Internet 作者:Internet 点击:525次 profile主要用在项目多环境 ...
- maven 打包 spring 项目
在程序中使用到了springframework控件(主要是为了使用Mybatis-spring操作数据库,省事). 使用maven管理项目的构建,现在需要生成一个jar包,包含所有依赖的jar包,并可 ...
- IntelliJ IDEA 开发工具项目maven管理
今天自己重新部署一下intellij下的项目开发环境,顺便把maven管理项目jar包的方法梳理一下 (1)首先下载apache-maven-3.0.4版本的maven,我自己解压在D:\maven\ ...
随机推荐
- Flex发行2048游戏
近来的2048像挺火的游戏.在公交车,吃.甚至还有人走在路上拿着手机在玩.之前我看我的同事们戏,我认为这是很天真,中移动太无聊了吧 到后面,他是在,我觉得真的很无聊,这时候,无聊的时候无聊,后来我想用 ...
- nginx lua redis 访问频率限制(转)
1. 需求分析 Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等. 用Nginx+Lua+Redis来做访问限制主要是考虑到高并发环境下快速访问控制的 ...
- 杭电1171 Big Event in HDU(母函数+多重背包解法)
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- MongoDB:逐渐变得无关紧要
我与MongoDB的关系可分为三个阶段.对于目前处于第三阶段的我来说,这款产品似乎变得无关紧要了.很快你就会明白为什么我这么说. 阶段一:痴迷 我与MongoDB的第一次接触十分神奇:一个poligl ...
- 你听说过XML吗?
我们每天都会见到各种各样的书,今天我们就来谈一谈有关书籍带给我们学习的启发. 正如上图所看到的,不同的书籍有不同的外观,比如教科书.儿童图书等:而且书也不是随便能够出版的,要有自己文档结构,语义规则. ...
- HDU 1711 Number Sequence(算法验证)
该怎么做.每一个人的人生都应该自己掌握.你给不了别人一切.你也不懂别人的忧伤. 微笑不代表快乐.哭泣不一定悲伤 不努力怎么让关心你的人幸福.不努力怎么让看不起你的人绝望. 我用生命在奋斗--lx_Zz ...
- 如何在ASP.NET MVC 中获取当前URL、controller、action
一.URL的获取很简单,ASP.NET通用: [1]获取 完整url (协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取 虚拟 ...
- 菜鸟教程工具(三)——Maven自己主动部署Tomcat
书连接至背面,在博客上,他介绍了如何使用Maven该项目包,这篇文章说,关于如何使用Maven会踢war部署包Tomcat.而不是手动copy过去. 眼下比較流行的方式有两种:一种是利用Tomcat官 ...
- linux shell 不同进制数据转换(二进制,八进制,十六进制,base64) (转)
shell可以在不调用第3方命令,表示不同进制数据.这里总结以下表示方法.shell 脚本默认数值是由10 进制数处理,除非这个数字某种特殊的标记法或前缀开头. 才可以表示其它进制类型数值.如:以 0 ...
- mysql常见操作汇总
1.Mysql服务突然启不来了,报错: 在分析时发现MySQL Server 5.0\data下面有个名称为用户名,扩展名为.err的文件: 150725 20:01:19 [Note] 自己的安装目 ...