使用Maven构建Spring Security应用
1.概述
本文将解释如何使用Maven构建Spring Security应用程序。将讨论使用Spring Security依赖项的特定用例。最新的Spring Security版本可以在Maven Central上找到。
这是前一篇Spring与Maven文章的后续内容,因此对于非安全性的Spring依赖项,这是开始的地方。
2. Maven与Spring Security
2.1. spring-security-core
Core Spring Security支持 - spring-security-core -包含身份验证和访问控制功能。并且支持独立(非Web)应用程序,方法级安全性和JDBC:
<properties>
<spring-security.version>5.0.6.RELEASE</spring-security.version>
<spring.version>5.0.6.RELEASE</spring.version>
</properties>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${spring-security.version}</version>
</dependency>
请注意,Spring和Spring Security处于不同的发布计划中,因此版本号之间并不总是匹配1:1
如果你正在使用旧版本的Spring - 理解这一事实是非常重要的,幸运的是,Spring Security 3.1.x不依赖于Spring 3.1.x版本!这是因为Spring Security 3.1.x是在Spring 3.1之前发布的。计划是在将来的版本中更紧密地调整这些依赖关系。
2.2. spring-security-web
要为Spring Security添加Web支持,需要spring-security-web依赖项
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring-security.version}</version>
</dependency>
它包含过滤器和相关的Web安全基础结构,可在Servlet环境中启用URL访问控制。
2.3。 Spring Security和较旧的Spring Core依赖项问题
这个新的依赖项也对Maven依赖图展示出问题,如上所述,Spring Security jar不依赖于最新的Spring核心jar(但在之前的版本上)。这可能会导致这些较旧的依赖项在类路径上占据优势,而不是更新的4.x Spring组件。
要理解为什么会这样,我们需要看看Maven如何解决这些问题,如果版本冲突,Maven将选择最接近树根的jar。在我们的例子中,spring-core由spring-orm(使用4.x.RELEASE版本)定义,但也由spring-security-core(使用旧的3.2.8.RELEASE版本)定义,所以在这两种情况下,spring-jdbc都是从我们项目的根pom定义的深度为1
,在我们自己的pom中定义spring-orm和spring-security-core的顺序实际上很重要。
第一个将优先考虑,所以我们可能最终得到任何一个版本在我们的类路径上
为了解决这个问题,我们必须在自己的pom中明确定义一些Spring依赖项,不依赖于隐式Maven依赖解析机制。这样做会将特定的依赖性放在我们pom的深度0处(因为它是在pom本身中定义的)所以它将优先考虑。以下所有内容属于同一类别,需要直接或为多模块项目明确定义,在父级的dependencyManagement元素中。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring-version}</version>
</dependency>
2.4. spring-security-config and others
要使用丰富的Spring Security XML命名空间,需要spring-security-config依赖关系:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring-security.version}</version>
<scope>runtime</scope>
</dependency>
没有应用程序代码应针对此依赖项进行编译,因此应将其作runtime范围。
最后,LDAP,ACL,CAS和OpenID支持在Spring Security中有自己的依赖关系。
spring-security-ldap, spring-security-acl, spring-security-cas and spring-security-openid.
3.使用快照和里程碑
Spring提供的自定义Maven存储库中提供了Spring Security里程碑和快照
有关如何配置这些内容的其他详细信息,请参阅如何使用快照和里程碑。
4。结论
本文讨论了使用Spring Security与Maven的实际细节。这里介绍的Maven依赖项当然是一些主要的依赖项。还有其他几个值得一提,但是这里做了删减,不过,这应该是在启用Maven的项目中使用Spring的一个很好的起点。
使用Maven构建Spring Security应用的更多相关文章
- springboot+maven整合spring security
springboot+maven整合spring security已经做了两次了,然而还是不太熟悉,这里针对后台简单记录一下需要做哪些事情,具体的步骤怎么操作网上都有,不再赘述.1.pom.xml中添 ...
- 在eclipse中使用maven构建spring cloud微服务
使用eclipse中使用maven构建spring cloud微服务,springcloud通过maven构建项目.springcloud项目搭建. 工具/原料 eclipse maven spr ...
- Eclipse Maven构建Spring MVC项目
工作中项目开发使用Maven管理项目的构建.打包.编译,框架採用的是Spring MVC框架,而且实现了多模块.多项目的管理.自己也简单的參与了架构的设计.对于刚開始学习的人来说,使用Maven构建项 ...
- maven 构建spring ssh mybatis 配置
详情参与 http://blog.csdn.net/yuguiyang1990/article/details/8811817 前面我们使用Maven构建了Struts2项目,这里我们来试一下Hibe ...
- maven构建spring报错org.springframework.core.NestedRuntimeException cannot be resolved.
Error:The type org.springframework.core.NestedRuntimeException cannot be resolved. It is indirectly ...
- maven 构建spring boot + mysql 的基础项目
一.maven 依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId> ...
- maven学习4 使用Maven构建Spring项目
1. 新建一个Web项目 参考之前的博客 2.修改 pom.xml,添加Spring依赖 <project xmlns="http://maven.apache.org/POM/4.0 ...
- MAVEN构建Spring +Spring mvc + Mybatis 项目(Maven配置部分(workshop))
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Spring Security 3.2.x与Spring 4.0.x的Maven依赖管理
原文链接: Spring Security with Maven原文日期: 2013年04月24日翻译日期: 2014年06月29日翻译人员: 铁锚 1. 概述 本文通过实例为您介绍怎样使用 Mave ...
随机推荐
- 题解 P3805 【【模板】manacher算法】
题解 P3805 [[模板]manacher算法] 我们先看两个字符串: ABCCBA ABCDCBA 显然这两字符串是回文的 然而两个串的对称中心的特性不同,第一个串,它的对称中心在两个C中间,然而 ...
- 如何利用Windows System Image Manager制作一个answer file
打开Windows System Image Manager 从菜单中创建一个新的Answer File 在窗体左下部的Windows Image处右键,选择菜单Select Windows Imag ...
- SIFT算法详解(转)
原文地址 http://blog.csdn.net/pi9nc/article/details/23302075 尺度不变特征变换匹配算法详解 Scale Invariant Feature Tran ...
- Android 普通okhttp、okhttp utils执行 post get请求,文件上传下载、请求图片
public class OKHttpActivity extends Activity implements View.OnClickListener { public static final M ...
- 在win7下使用git和gitlab进行code review
1.安装 Git-2.6.3-64-bit.exe 下载地址:http://pan.baidu.com/s/1hqGvwnq 2.根据收到的邮件进入gitlab网站,并修改密码登陆 3.新建一个文件 ...
- ES6中的class 与prototype
一.定义构造函数 在以前的js中,生成一个对象实例,需要先定义构造函数,然后通过prototype 的方式来添加方法,在生成实例: function Person(){ this.name = &qu ...
- java.sql.SQLException: Access denied for user 'somebody'@'localhost' (using password: YES)
用mybatis和spring整合时出现了一个错误: 我是在IntelliJ IDEA上整合Mybatis和Spring的,运行测试用例出现了如上错误. 红色的马赛克部分是我的名字. 问题是,我的数据 ...
- 读《nodejs开发指南》记录
最近看了一下<nodejs开发指南>发现nodejs在某些特定的领域由他自己的长处,适合密集计算但是业务逻辑比较简单的场景,如果做网站还是选择php吧,呵呵,这本书我除了第5章<用n ...
- 在ubuntu环境安装youcompleteme
sudo apt-get update #更新软件源 sudo apt-get clang #安装clang sudo apt-get cmake #安装cmake sudo apt-get inst ...
- java数据的5种存储位置(转)
任何语言所编写的程序,其中的各类型的数据都需要一个存储位置,java中书的存储位置分为以下5种: 1.寄存器 最快的存储区,位于处理器内部,但是数量及其有限.所以寄存器根据需求自动分配,无序人为控制. ...