此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Security 6.4.3spring-doc.cadn.net.cn

获取 Spring Security

本节介绍如何获取 Spring Security 二进制文件。 有关如何获取源代码的信息,请参见 源代码spring-doc.cadn.net.cn

版本编号

Spring Security 版本的格式为 MAJOR。次要。PATCH 的调用,以便:spring-doc.cadn.net.cn

  • MAJOR 版本可能包含重大更改。 通常,这样做是为了提供改进的安全性以匹配现代安全实践。spring-doc.cadn.net.cn

  • MINOR 版本包含增强功能,但被视为被动更新。spring-doc.cadn.net.cn

  • PATCH 级别应该是完全兼容的,向前和向后,除了修复错误的更改可能例外。spring-doc.cadn.net.cn

用法

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

Spring Boot

Spring Boot 提供了一个spring-boot-starter-security聚合 Spring Security 相关依赖项的 starter。 使用 starter 的最简单和首选的方法是通过使用 IDE 集成(EclipseIntelliJNetBeans)或通过 start.spring.io 来使用 Spring Initializr。 或者,您可以手动添加Starters,如下例所示:spring-doc.cadn.net.cn

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 版本,可以使用build属性来实现,如下所示:spring-doc.cadn.net.cn

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

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

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

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

独立使用(无 Spring Boot)

当你在没有 Spring Boot 的情况下使用 Spring Security 时,首选的方法是使用 Spring Security 的 BOM 来确保在整个项目中使用一致的 Spring Security 版本。spring-doc.cadn.net.cn

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:6.5.0-SNAPSHOT'
	}
}
Spring 提供了一个Dependency Management Plugin用于 Gradle

最小的 Spring Security Maven 依赖项集通常类似于以下示例:spring-doc.cadn.net.cn

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-doc.cadn.net.cn

Spring Security 基于 Spring Framework 6.2.3 构建,但通常应该与任何较新版本的 Spring Framework 5.x 一起使用。 许多用户可能会与 Spring Security 的传递依赖项解析 Spring Framework 6.2.3 这一事实相冲突,这可能会导致奇怪的 Classpath 问题。 解决此问题的最简单方法是使用spring-framework-bom<dependencyManagement>部分的pom.xml或您的dependencyManagement部分的build.gradle.spring-doc.cadn.net.cn

pom.xml
<dependencyManagement>
	<dependencies>
		<!-- ... other dependency elements ... -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-framework-bom</artifactId>
			<version>6.2.3</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:6.2.3'
	}
}
Spring 提供了一个Dependency Management Plugin用于 Gradle

前面的示例确保 Spring Security 的所有传递依赖项都使用 Spring 6.2.3 模块。spring-doc.cadn.net.cn

这种方法使用 Maven 的“物料清单”(BOM) 概念,并且仅在 Maven 2.0.9+ 中可用。 有关如何解决依赖关系的更多详细信息,请参阅 Maven 的 Introduction to the Dependency Mechanism 文档spring-doc.cadn.net.cn

Maven 存储库

所有 GA 版本都部署到 Maven Central,因此您无需在构建配置中声明其他 Maven 存储库。spring-doc.cadn.net.cn

对于 Gradle,使用mavenCentral()repository 就足够用于 GA 版本了。spring-doc.cadn.net.cn

build.gradle
repositories {
	mavenCentral()
}

如果使用 SNAPSHOT 版本,则需要确保已定义 Spring Snapshot 存储库:spring-doc.cadn.net.cn

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 里程碑存储库,如下例所示:spring-doc.cadn.net.cn

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' }
}