获取 Spring Security

本节介绍如何获取Spring Security二进制文件。有关如何获取源代码的信息,请参阅源代码

发布版本号

Spring Security版本号格式为 MAJOR.MINOR.PATCH,其中:

  • MAJOR 版本可能包含重大更改。通常,这些更改是为了提供改进的安全性以适应现代安全实践。

  • MINOR 版本包含增强功能,但被视为被动更新。

  • PATCH 级别应与前向和后向完美兼容,可能修复错误的更改除外。

用法

与大多数开源项目一样,Spring Security将其依赖项作为Maven构件部署,这使得它们与Maven和Gradle都兼容。以下章节演示了如何将Spring Security与这些构建工具集成,并提供了Spring Boot和独立使用的示例。

Spring Boot

Spring Boot提供了一个spring-boot-starter-security启动器,它聚合了与Spring Security相关的依赖项。使用该启动器最简单和首选的方式是使用Spring Initializr,通过IDE集成(EclipseIntelliJNetBeans)或通过start.spring.io。另外,您也可以手动添加启动器,如以下示例所示

  • Maven

  • Gradle

pom.xml
<dependencies>
	<!-- ... other dependency elements ... -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-security</artifactId>
	</dependency>
</dependencies>
build.gradle
dependencies {
	implementation "org.springframework.boot:spring-boot-starter-security"
}

由于Spring Boot提供了一个Maven BOM来管理依赖项版本,因此您无需指定版本。如果您希望覆盖Spring Security版本,可以通过构建属性进行操作,如下所示

  • Maven

  • Gradle

pom.xml
<properties>
	<!-- ... -->
	<spring-security.version>7.0.0</spring-security.version>
</properties>
build.gradle
ext['spring-security.version']='7.0.0'

由于Spring Security只在主要版本中进行重大更改,因此您可以安全地将较新版本的Spring Security与Spring Boot一起使用。但是,有时您可能还需要更新Spring Framework的版本。您可以通过添加构建属性来实现,如下所示

  • Maven

  • Gradle

pom.xml
<properties>
	<!-- ... -->
	<spring.version>7.0.0</spring.version>
</properties>
build.gradle
ext['spring.version']='7.0.0'

如果您使用其他功能(例如LDAP、OAuth 2等),您还需要包含相应的项目模块和依赖项

独立使用(不带Spring Boot)

当您不使用Spring Boot而使用Spring Security时,首选的方法是使用Spring Security的BOM以确保在整个项目中都使用一致的Spring Security版本。

  • Maven

  • Gradle

pom.xml
<dependencyManagement>
	<dependencies>
		<!-- ... other dependency elements ... -->
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-bom</artifactId>
			<version>{spring-security-version}</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>
build.gradle
plugins {
	id "io.spring.dependency-management" version "1.0.6.RELEASE"
}

dependencyManagement {
	imports {
		mavenBom 'org.springframework.security:spring-security-bom:7.0.0'
	}
}
Spring为Gradle提供了一个Dependency Management Plugin

一个最小的Spring Security Maven依赖项集通常如下例所示

  • Maven

  • Gradle

pom.xml
<dependencies>
	<!-- ... other dependency elements ... -->
	<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-config</artifactId>
	</dependency>
</dependencies>
build.gradle
dependencies {
	implementation "org.springframework.security:spring-security-web"
	implementation "org.springframework.security:spring-security-config"
}

如果您使用其他功能(例如LDAP、OAuth 2等),您还需要包含相应的项目模块和依赖项

Spring Security是基于Spring Framework 7.0.0 构建的,但通常应与任何更新的Spring Framework 5.x 版本一起使用。许多用户很可能会遇到Spring Security的传递依赖项解析Spring Framework 7.0.0 的问题,这可能导致奇怪的类路径问题。解决此问题最简单的方法是在您的pom.xml<dependencyManagement>部分或您的build.gradledependencyManagement部分中使用spring-framework-bom

  • Maven

  • Gradle

pom.xml
<dependencyManagement>
	<dependencies>
		<!-- ... other dependency elements ... -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-framework-bom</artifactId>
			<version>7.0.0</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>
build.gradle
plugins {
	id "io.spring.dependency-management" version "1.0.6.RELEASE"
}

dependencyManagement {
	imports {
		mavenBom 'org.springframework:spring-framework-bom:7.0.0'
	}
}
Spring为Gradle提供了一个Dependency Management Plugin

前面的示例确保Spring Security的所有传递依赖项都使用Spring 7.0.0 模块。

这种方法使用Maven的“物料清单”(BOM)概念,仅在Maven 2.0.9+ 中可用。有关依赖项如何解析的更多详细信息,请参阅Maven的依赖机制介绍文档

Maven仓库

所有GA版本都已部署到Maven Central,因此您无需在构建配置中声明额外的Maven仓库。

对于使用mavenCentral()仓库的Gradle,足以满足GA版本的需求。

build.gradle
repositories {
	mavenCentral()
}

如果您使用SNAPSHOT版本,则需要确保已定义Spring Snapshot仓库

  • Maven

  • Gradle

pom.xml
<repositories>
	<!-- ... possibly other repository elements ... -->
	<repository>
		<id>spring-snapshot</id>
		<name>Spring Snapshot Repository</name>
		<url>https://repo.spring.io/snapshot</url>
	</repository>
</repositories>
build.gradle
repositories {
	maven { url 'https://repo.spring.io/snapshot' }
}

如果您使用里程碑或发布候选版本,您需要确保已定义Spring里程碑仓库,如下例所示

  • Maven

  • Gradle

pom.xml
<repositories>
	<!-- ... possibly other repository elements ... -->
	<repository>
		<id>spring-milestone</id>
		<name>Spring Milestone Repository</name>
		<url>https://repo.spring.io/milestone</url>
	</repository>
</repositories>
build.gradle
repositories {
	maven { url 'https://repo.spring.io/milestone' }
}
© . This site is unofficial and not affiliated with VMware.