使用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 ...
随机推荐
- squid代理缓存服务器
参考文章 http://www.cnblogs.com/mchina/p/3812190.html ;
- 洛谷 2868 [USACO07DEC]观光奶牛Sightseeing Cows
题目戳这里 一句话题意 L个点,P条有向边,求图中最大比率环(权值(Fun)与长度(Tim)的比率最大的环). Solution 巨说这是0/1分数规划. 话说 0/1分数规划 是真的难,但貌似有一些 ...
- Java基础教程:面向对象编程[3]
Java基础教程:面向对象编程[3] 内容大纲 基础编程 获取用户输入 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入.我们可以查看Ja ...
- VMware和Centos系统安装
1.Linux发行版的选择 2.vmware创建一个虚拟机(centos) 3.安装配置centos7 4.xshell配置连接虚拟机(centos) 选择性 pc可以选择 -纯系统 Linux/wi ...
- 51nod 80分算法题
1537:见前几篇. 1627:题意:给定n,m的网格(10^5),初始状态为(1,1),你每次可以瞬移到右下方(不可以同行同列逗留)任何一个方格里,求移动到n,m的方案数. 一句话题解:首先很容易想 ...
- Hadoop- Hadoop详解
首先所有知识以官网为准,所有的内容在官网上都有展示,所有的变动与改进,新增内容都以官网为准.hadoop.apache.org Hadoop是一个开源的可拓展的分布式并行处理计算平台,利用服务器集群根 ...
- android使用mina需要注意的问题
1.第三方jar包的使用 如果在Java Build Path中使用Add External JARs这种方式,运行时会有找不到类的错误(我的上面有,如果你没出现,恭喜你),上网查了几种方 ...
- SGU 495 Kids and Prizes:期望dp / 概率dp / 推公式
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=495 题意: 有n个礼物盒,m个人. 最开始每个礼物盒中都有一个礼物. m个人依次随 ...
- 分享知识-快乐自己:IDEA 导入(web)项目并部署到 Tomcat
IDEA 导入 (WEB)项目并部署到 Tomcat 1):导入 Web 项目 2):首先更改 JDK 环境 右键项目: 第一步:点击 Modules 第二步:点击 Libraries 第三步:点 ...
- Eclipse_配置_00_资源帖
1.Eclipse常用设置 2.eclipse设置和优化 3.Eclipse在工作中的一些常用设置及快捷键整理 4.Eclipse常用插件下载地址