跳到主要内容

获取 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 集成(如 EclipseIntelliJNetBeans)使用 Spring Initializr,或者通过 start.spring.io 进行配置。此外,你也可以手动添加该启动器,如下例所示:

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

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

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

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

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

如果你使用额外的功能(如 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>
xml
提示

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

如果您使用了额外的功能(例如 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.gradledependencyManagement 部分中使用 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>
xml
提示

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()
}
groovy

如果你使用的是 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>
xml

如果你使用的是里程碑版或发布候选版本,你需要确保你已经定义了 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>
xml