使用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 ...
随机推荐
- 马尔科夫链在第n步转移的状态的概率分布
- Eclipse:Could not create the view: Plug-in org.eclipse.jdt.ui was unable to load class org.eclipse.
今天电脑死机了2次,重启电脑开eclipse后,发现项目环境坏了.百度后得到的答案是删除.metadata目录.但觉得麻烦,后在stackoverflow发现最佳的方式是 把 .metadata/.p ...
- Hadoop实战-Flume之自定义Source(十八)
import java.nio.charset.Charset; import java.util.HashMap; import java.util.Random; import org.apach ...
- centos 7 PostgreSQL一些简单问题以及解决办法
问题:org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are corre ...
- GstAppSrc简介
Description The appsrc element can be used by applications to insert data into a GStreamer pipeline. ...
- PAT 甲级 1005. Spell It Right (20) 【字符串】
题目链接 https://www.patest.cn/contests/pat-a-practise/1005 思路 因为 n <= 10^100 所以 要用字符串读入 但是 100 * 100 ...
- Ubuntu/CentOS下使用脚本自动安装 Docker
Ubuntu.Debian 系列安装 Docker 系统要求 Docker 支持以下版本的 Ubuntu 和 Debian 操作系统: Ubuntu Xenial 16.04 (LTS) Ubuntu ...
- BA优化PnP的思路
由之前的PnP,可以求出一个R,t,K又是已知的.而且空间点的世界坐标知道,第二个相机位姿的像素坐标也是知道的.就可以利用它们进行优化.首先确定变量为const vector<Point3f&g ...
- 郝健: Linux内存管理学习笔记-第2节课【转】
本文转载自:https://blog.csdn.net/juS3Ve/article/details/80035753 摘要 slab./proc/slabinfo和slabtop 用户空间mallo ...
- 002-CSS基础
1 CSS和文档 CSS 层叠样式表 元素 每个元素都会生成一个框(box) 元素 = 替换元素 + 非替换元素 替换元素 显示的内容是元素内的某个属性而不是元素本身, 如img 非替换元素 大部分类 ...