Maven的春天

1.概述

本教程将讨论如何使用Maven设置Spring,并介绍使用Spring依赖项的特定用例。 最新的Spring版本可以在Maven Central上找到。

2.基本的Maven Spring依赖关系

Spring被设计为模块化和灵活的-基本的Spring容器可用于各种场景,而无需包含框架必须提供的任何更高级的功能。 一个非常基本的Maven设置将只需要使用spring-context依赖项:

<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>

此依赖关系(即spring-context )定义了实际的Spring Injection Container,并具有少量依赖关系: spring-corespring-expressionspring-aopspring-beans 。 这些通过启用对某些Spring核心技术的支持来增强容器:Core Spring实用程序, Spring Expression Language (SpEL), Aspect Oriented Programming支持和JavaBeans机制 。

请注意,在定义spring-context依赖项时使用了运行时作用域 -这将确保在任何特定于Spring的API上都没有编译时依赖项。 对于更高级的用例,可以从某些选定的Spring依赖项中删除运行时范围,但是对于更简单的项目, 无需针对Spring进行编译即可充分利用框架。

还要注意,从Spring 3.2开始,已经重新打包了CGLIB依赖关系 (现在已升级到CGLIB 3.0)(所有net.sf.cglib软件包现在都是org.springframework.cglib),并直接内联到spring-core JAR中(请参见JIRA,以获取更多详细信息),因此无需明确定义它。

3. Maven的Spring持久性

除了上面显示的核心Spring依赖项之外,主要的Spring持久性依赖项是spring-orm

<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表示Spring中极其灵活的事务管理抽象 。

4.带有Maven的Spring MVC

要使用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-webmvcspring-web作为依赖项,因此在使用spring-webmvc时不需要显式定义spring-web

5.使用Maven的Spring Security

安全性Maven依赖关系在Spring Security with Maven文章中进行了深入讨论。

6.弹簧测试

可以通过以下依赖项将Spring Test Framework包含在项目中:

<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version><scope>test</scope>
</dependency>

从Spring 3.2开始,Spring MVC Test项目从github上的一个独立项目开始,已经包含在核心Test Framework中。 这意味着Spring 3.2应用程序应该只使用spring-test依赖项。

对于仍使用Spring 3.1及更低版本的应用程序,较旧的独立Maven依赖关系仍然存在,并且可以用于几乎相同的结果。 但是,该依赖项不在Maven Central上,因此使用它需要将自定义存储库添加到项目的pom中。

7.使用里程碑

Spring的发行版托管在Maven Central中。 但是,如果项目需要使用里程碑版本,则需要将自定义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>

已经定义了一个此存储库,项目可以定义依赖项,例如:

<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存储库后,可以引用以下依赖项:

<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.结论

本文讨论了将Spring与Maven结合使用的实际细节。 这里介绍的Maven依赖关系当然是一些主要的依赖关系,还有其他一些值得一提并且还没有削减的依赖关系。 不过,这应该是在项目中使用Spring的良好起点。

参考:在baeldung博客上,我们JCG合作伙伴 Eugen Paraschiv的Maven带来了Spring 。

翻译自: https://www.javacodegeeks.com/2013/04/spring-with-maven.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux查看进程运行日志文件,【Linux】常用指令、ps查看进程、kill杀进程、启动停止tomcat命令、查看日志、查看端口、find查找文件...

1.说出 10 个 linux 常用的指令1) ls 查看目录中的文件2)cd /home 进入 / home 目录&#xff1b;cd .. 返回上一级目录&#xff1b;cd ../.. 返回上两级目录3)mkdir dir1 创建一个叫做 dir1 的目录4)rmdir dir1 删除一个叫做 dir1 的目录 (只能删除空目录)5)rm -f file1 删除一…

页面缓存之Meta http-equiv属性详解

http-equiv顾名思义&#xff0c;相当于http的文件头作用&#xff0c;它可以向浏览器传回一些有用的信息&#xff0c;以帮助正确和精确地显示网页内容&#xff0c;与之对应的属性值为content&#xff0c;content中的内容其实就是各个参数的变量值。 引用 meat标签的http-equiv…

Mysql存储过程详解

Mysql存储过程&#xff1a;1.1 定义&#xff1a;把复杂的操作&#xff0c;封装一个过程。类似于函数。 优点&#xff1a; 1、复杂操作&#xff0c;调用简单。 2、速度快。 缺点&#xff1a; 1、封装复杂。 2、没有灵活性。1.2 查看所有存储过…

E20171106-hm

pulldown adj. 折叠式的; pulldown menu 下拉菜单转载于:https://www.cnblogs.com/lancgg/p/8281683.html

Java PDF库

最近&#xff0c;我有一项任务是选择一些Java PDF库用于PDF生成。 但这不是一个简单的任务。 我想到的第一件事是iText。 众所周知Java库具有良好的声誉。 但是...有一些塞子。 iText 5版是在AGPL许可下发布的。 即&#xff0c;如果我们想在商业产品中使用iText&#xff0c;则必…

linux系统md5sum命令用不了,Linux中md5sum命令起什么作用呢?

摘要:下文讲述Linux中md5sum命令的功能说明&#xff0c;如下所示&#xff1b;md5sum命令功能:用于为一个文件生成其内容的MD5值&#xff0c;此命令的原理是对文件的内容进行校验,生成文件内容的MD5值此方式常用于检测文件是否被篡改(因为内容修改后&#xff0c;其MD5值会发生变…

前端工程师必备的几个实用网站

一、配色类网站 http://colorhunt.co 这个网站给我们提供了很多的配色方案&#xff0c;我们直接使用就OK了。使用方法也很简单&#xff0c;鼠标移动到对应的颜色上&#xff0c;我们就可以看到颜色的十六进制码&#xff0c;复制这个颜色到工具里就可以使用了。 https://webgra…

BZOJ1004 [HNOI2008]Cards 【burnside定理 + 01背包】

题目链接 BZOJ1004 题解 burnside定理 在\(m\)个置换下本质不同的染色方案数&#xff0c;等于每种置换下不变的方案数的平均数 记\(L\)为本质不同的染色方案数&#xff0c;\(m\)为置换数&#xff0c;\(f(i)\)为置换\(i\)下不变的方案数&#xff0c;那么\[L \frac{1}{m}\sum\li…

函数接口– Java 8中java.util.function包中的函数接口

我以前写过有关功能接口及其用法的文章。 如果您正在探索要成为Java 8一部分的API&#xff0c;尤其是那些支持lambda表达式的API&#xff0c;您会发现很少的接口&#xff0c;例如Function&#xff0c;Supplier&#xff0c;Consumer&#xff0c;Predicate和其他接口&#xff0c;…

Gcc静态编译出错

编译命令&#xff1a;gcc -static -o test test.c 出错信息&#xff1a;/usr/bin/ld: cannot find -lccollect2: error: ld returned 1 exit status 原因&解决方法&#xff1a;静态链接需要静态库&#xff0c;系统没有安装静态库导致报错。yum install glibc-static.x86_64…

css之浮动

首先说下什么是浮动&#xff08;float&#xff09;&#xff1a;浮动的框可以向左向右移动&#xff0c;直到他的外边缘碰到包含框或者另一个浮动框为止。 浮动在css样式里面是很重要的&#xff0c;我们一起来看看浮动的特点&#xff1a; 1.脱离标准文档流&#xff08;简称脱标&…

linux 修改jmeter内存溢出,jmeter本机内存溢出如何修改?

websocket连接过程中内存溢出&#xff0c;本机配置的内存最大和最小设置的512&#xff1b;一、后台返回二、结果树返回&#xff1a;Thread Name: 线程组 1-9Sample Start: 2017-09-11 13:59:49 CSTLoad time: 9006Connect Time: 0Latency: 0Size in bytes: 0Sent bytes:0Header…

Monkey写脚本

今天学习使用monkey测试一个应用的登陆&#xff0c;遇到些问题记录下&#xff1a; 先上代码&#xff1a; typeraw events count 1 speed 1.0 start data >>LauncheActivity(com.android.smartmirror,com.android.smartmirror.activities.MainActivity)UserWait(500) //…

JSF:在传统组件和时尚性能杀手之间进行选择

这篇博客文章起源于一个大型Web应用程序中的性能问题。 每个人都优化Java代码&#xff0c;但似乎没有人尝试优化JavaScript代码。 奇怪&#xff0c;因为在客户端有很多改进的空间。 我会说&#xff0c;甚至比服务器端还要多。 我们将分析可编辑的JSF标准组件&#xff08;有时称…

JS之 if语句函数 对接事件动作 函数更改css css对接需要换妆的区id或class

if 函数的实现步骤: function 名字() 指定id , 指定开关(display: none or block) if else 构成逻辑 控制开关 决定在哪里安置一个灯泡, 指定一个id给某个标签 把开关用电线连着灯泡, 安装开关 # id名称{ 属性1 赋值, 属性 2 赋值 , 属性3 赋值 } 所有的赋值都可以成为一…

BZOJ - 4520 K远点对

题意:已知平面内 N 个点的坐标,求欧氏距离下的第 K 远点对 维护大小为2k最小堆,KD树的估值用前面提到的做法 PS.网上有人估价是使用边界四个点的最值来独立枚举,然而这样写似乎过不了 #include<bits/stdc.h> #define rep(i,j,k) for(register int ij;i<k;i) #define r…

小型Hadoop集群的Ganglia配置和一些故障排除

Ganglia是一个针对大型集群的开源&#xff0c;可扩展且分布式的监视系统。 它收集&#xff0c;汇总并提供数十种与计算机相关的指标&#xff08;例如CPU&#xff0c;内存&#xff0c;存储&#xff0c;网络使用情况&#xff09;的时序视图。 您可以在UC Berkeley Grid上看到Gang…

linux 命令分号,linux命令之间的分号,, ||

声明、定义 in C&plus;&plus;序 声明和定义是我们使用的基础,但是对于声明和定义的概念,我们不甚了了,也就是说感觉好像是这样,但是真要详细说明就说不上来. 有博主对于声明和定义有以下描述: 1.需要建立存储空间的 ...Java基础之创建窗口——使用流布局管理器…

margin赋值为负值的几种效果(负值像素,负值百分数)

1、margin-top为负值像素 margin-top为负值像素&#xff0c;偏移值相对于自身&#xff0c;其后元素受影响&#xff0c;见如下代码&#xff1a; 1 <!DOCTYPE html>2 <html lang"zh">3 <head>4 <meta charset"UTF-8" />5 &…

代码大全:类

第二部分 创建高质量的代码 第6章 可以工作的类 在计算时代的早期&#xff0c;程序员基于语句来思考编程问题。到了二十世纪七八十年代&#xff0c;程序员开始基于子程序去思考编程。进入二十一世纪&#xff0c;程序员以类为基础思考编程问题。【思考编程的角度有很多&#xff…