如何在Maven中配置Spring依赖

如题所述

1.1 spring-security-core

Spring Security的核心功能是由spring-security-core包提供的,包含了认证和访问控制功能、支持standalone应用程序、方法级安全和JDBC支持。

<properties>
<org.springframework.security.version>3.2.3.RELEASE</org.springframework.security.version>
<org.springframework.version>4.0.4.RELEASE</org.springframework.version>
</properties>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${org.springframework.security.version}</version>
</dependency>
注意:我们使用的是3.2.x版本的Spring Security--Spring和Spring Security有着不同的版本计划,所以他们的版本号之间没有一对一关系。

如果项目使用的是较老版本的Spring,需要注意的时Spring Security 3.1.x版本不依赖于Spring 3.1.x版本,因为Spring Security 3.1.x版本在Spring 3.1之前发布。Spring的计划是在后续的版本中,使双方的版本号更为接近,更多细节请查看这个JIRA。我们将在后面的内容中看看这种情况对我们的实际影响。

1.2 spring-security-web

要为Spring Security增加Web支持,需要引入spring-security-web依赖:

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${org.springframework.security.version}</version>
</dependency>
这个项目为Servlet环境引入了针对URL访问控制的相关基础安全组件和过滤器。

1.3 Spring Security与较老版本的Spring Core之间的依赖问题

如上文所述,这个新的依赖产生一个Maven依赖关系问题,Spring Security的相关jar不依赖于最新的Spring core的jar (而是以前的版本)。这可能使的被依赖的Spring core相关包在类路径中被配置前在最新的Spring 4.x相关包的前面。

这是如何发生的呢?我们需要了解Maven处理版本冲突的机制,Maven会选择与依赖树树根最接近的版本。在之前的情况中,spring-orm依赖4.x版本的spring-core,而spring-security-core依赖于3.2.8版本的spring-core。因此,spring-orm和sprint-security-web的定义顺序就是一个问题,先定义的会有更高的优先级。最终情况就是,我们的类路径中会有两个版本的spring-core。

为了避免这类问题,我们需要在我们的pom文件中明确指定一些Spring依赖,而不依靠Maven隐式依赖机制。我们将在pom的根文件中定义特定的依赖关系,这样这些依赖关系将会有更高的优先级。下面例子中,将对所有的Spring核心组件明确定义相同的版本,对于多模块项目,需要在父配置文件的dependencyManagement属性中定义。

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework.version}</version>
</dependency>
1.4 spring-security-config及其他

要使用丰富的Spring Security XML的命名空间,需要定义spring-security-config依赖:

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${org.springframework.security.version}</version>
<scope>runtime</scope>
</dependency>
没有任何代码需要在编译时依赖这个包,所以它的范围应该定义为runtime。

最后,LDAP、ACL、CAS和OpenID支持需要分别增加各自的依赖包:spring-security-ldap, spring-security-acl, spring-security-cas和spring-security-openid。
温馨提示:内容为网友见解,仅供参考
无其他回答

如何在Maven中配置Spring依赖
在Maven中Spring的基础配置 Spring是高度模块化的,可以单独使用Spring的某个库而不需要依赖Spring的其他库。比如,使用Spring Context库不需要依赖Spring Persistence或者Spring MVC库。让我们先从最简单开始,在Maven中配置spring-context依赖:<properties> <org.springframework.version>3.2.8.RELEASE<\/o...

maven中如何配置springboot的相关依赖和热启动
maven中配置springboot的相关依赖和热启动的方法如下:1、在maven中配置springboot的相关依赖及热启动,需要在pom.xml文件中添加springboot的相关依赖。2、在maven插件中添加spring-boot-maven-plugin插件,用于启动springboot应用。3、在maven插件中添加spring-boot-devtools插件,用于实现热启动。

如何在Maven中配置Spring Security依赖
1.3 Spring Security与较老版本的Spring Core之间的依赖问题 如上文所述,这个新的依赖产生一个Maven依赖关系问题,Spring Security的相关jar不依赖于最新的Spring core的jar (而是以前的版本)。这可能使的被依赖的Spring core相关包在类路径中被配置前在最新的Spring 4.x相关包的前面。这是如何发生的...

Maven阿里云镜像解决SpringBoot依赖问题
首先,确保你的IDEA或其他开发工具的Maven配置指向了包含阿里云镜像的settings.xml。在IDEA中,可以通过【File】 → 【Settings】 → 搜索“Maven”来找到并配置,如图所示。在Windows系统中,settings.xml默认位于用户目录的.m2文件夹内,你可以将包含阿里云镜像的settings.xml替换掉,从而避免后续依赖下载问题...

怎么用maven集成struts2,spring
通过maven命令将jar包安装到本地。在有sqljdbc4.jar包的文件夹下,通过shift+右键的方式--》此处打开命令窗口,然后执行以下maven命令 mvn install:install-file -Dfile=sqljdbc4.jar -Dpackaging=jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 命令解释:mvn install:...

Spring+Boot整合MyBatis的逆向工程需要在pom文件中配置相应的依赖...
是的,如果你想要在Spring Boot项目中使用MyBatis逆向工程,你需要在pom.xml文件中配置相应的依赖。以下是一些常见的依赖配置:首先,你需要添加MyBatis相关的依赖:xml复制代码<dependency> <groupId>org.mybatis.spring.boot<\/groupId> <artifactId>mybatis-spring-boot-starter<\/artifactId> <version>2...

maven创建父子工程 springboot自动配置
在普通的Maven工程中,可以通过两种方法引入Spring Boot:一种是在父工程中引入并配置版本号,然后在子工程中引用父工程;另一种是直接在子工程中引入Spring Boot依赖,明确指定版本号。引入Spring Boot依赖后,在项目结构中可以查看到相应的依赖版本。实际操作时,可以使用Spring Initializr快速创建Spring Boot...

SpringSecurity四:Springboot集成SpringSecurity
1. 创建Maven工程Springboot_security 在Maven工程中添加以下依赖以支持Spring Boot、Spring Security以及相关组件。在pom.xml文件中加入:org.springframework.boot spring-boot-starter-parent 2.0.6.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-...

创建springboot项目(maven创建springboot项目)
第一步:启动一个新的SpringBoot项目利用启动.spring.io创建一个“网络”项目。在“依赖项”对话框中搜索并添加“web”依赖项,如屏幕截图所示。点击“生成”按钮,下载zip,然后将其解压缩到计算机上的文件夹中。其实SpringBoot项目的启动,本质上就是一个Spring的初始化操作。新建springboot项目在pom....

如何用springboot创建maven的依赖工程
1.首先要下载maven,用maven管理项目很方便,下载完maven配置好环境,maven我就不细说了。2.创建一个maven项目,pom.xml文件里面写这些:<modelVersion>4.0.0<\/modelVersion><groupId>springboot<\/groupId><artifactId>testSpringBoot<\/artifactId><version>0.0.1-SNAPSHOT<\/version><name>testSpringBoot<\/name><...

相似回答