跳到主要内容
版本:6.4.3

获取 Spring Security

DeepSeek V3 中英对照 Getting 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 相关的依赖项。使用该启动器最简单且首选的方式是通过 IDE 集成(如 Eclipse 或 IntelliJ、NetBeans)使用 Spring Initializr,或者通过 start.spring.io 进行配置。此外,你也可以手动添加该启动器,如下例所示:

<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>

由于 Spring Boot 提供了 Maven BOM 来管理依赖版本,因此你不需要指定版本。如果你希望覆盖 Spring Security 版本,可以通过构建属性来实现,如下所示:

<properties>
<!-- ... -->
<spring-security.version>6.4.3</spring-security.version>
</properties>

由于 Spring Security 仅在主要版本中进行破坏性更改,因此您可以安全地在 Spring Boot 中使用较新版本的 Spring Security。然而,有时您可能还需要更新 Spring Framework 的版本。您可以通过添加构建属性来实现,如下所示:

<properties>
<!-- ... -->
<spring.version>6.2.3</spring.version>
</properties>

如果你使用额外的功能(如 LDAP、OAuth 2 等),你还需要包含相应的 项目模块和依赖项。

独立使用(不使用 Spring Boot)​

当你在没有使用 Spring Boot 的情况下使用 Spring Security 时,推荐的方式是使用 Spring Security 的 BOM(物料清单)来确保在整个项目中使用一致的 Spring Security 版本。

<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>
提示

Spring 为 Gradle 提供了一个 依赖管理插件

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

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

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

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

<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>
提示

Spring 提供了一个 Dependency Management Plugin 用于 Gradle

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

备注

此方法使用 Maven 的“材料清单”(BOM)概念,仅适用于 Maven 2.0.9 及以上版本。有关依赖项解析的更多详细信息,请参阅 Maven 依赖机制介绍文档。

Maven 仓库​

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

对于 Gradle 使用 mavenCentral() 仓库足以获取 GA 版本。

repositories {
mavenCentral()
}

如果你使用的是 SNAPSHOT 版本,你需要确保已经定义了 Spring Snapshot 仓库:

<repositories>
<!-- ... possibly other repository elements ... -->
<repository>
<id>spring-snapshot</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/snapshot</url>
</repository>
</repositories>

如果你使用的是里程碑版或发布候选版本,你需要确保你已经定义了 Spring Milestone 仓库,如下例所示:

<repositories>
<!-- ... possibly other repository elements ... -->
<repository>
<id>spring-milestone</id>
<name>Spring Milestone Repository</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>