獲取 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整合(Eclipse或IntelliJ、NetBeans)或透過start.spring.io。另外,您也可以手動新增啟動器,如以下示例所示
-
Maven
-
Gradle
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
dependencies {
implementation "org.springframework.boot:spring-boot-starter-security"
}
由於Spring Boot提供了一個Maven BOM來管理依賴項版本,因此您無需指定版本。如果您希望覆蓋Spring Security版本,可以透過構建屬性進行操作,如下所示
-
Maven
-
Gradle
<properties>
<!-- ... -->
<spring-security.version>7.0.0</spring-security.version>
</properties>
ext['spring-security.version']='7.0.0'
由於Spring Security只在主要版本中進行重大更改,因此您可以安全地將較新版本的Spring Security與Spring Boot一起使用。但是,有時您可能還需要更新Spring Framework的版本。您可以透過新增構建屬性來實現,如下所示
-
Maven
-
Gradle
<properties>
<!-- ... -->
<spring.version>7.0.0</spring.version>
</properties>
ext['spring.version']='7.0.0'
如果您使用其他功能(例如LDAP、OAuth 2等),您還需要包含相應的專案模組和依賴項。
獨立使用(不帶Spring Boot)
當您不使用Spring Boot而使用Spring Security時,首選的方法是使用Spring Security的BOM以確保在整個專案中都使用一致的Spring Security版本。
-
Maven
-
Gradle
<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>
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
<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>
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.gradle的dependencyManagement部分中使用spring-framework-bom。
-
Maven
-
Gradle
<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>
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版本的需求。
repositories {
mavenCentral()
}
如果您使用SNAPSHOT版本,則需要確保已定義Spring Snapshot倉庫
-
Maven
-
Gradle
<repositories>
<!-- ... possibly other repository elements ... -->
<repository>
<id>spring-snapshot</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/snapshot</url>
</repository>
</repositories>
repositories {
maven { url 'https://repo.spring.io/snapshot' }
}
如果您使用里程碑或釋出候選版本,您需要確保已定義Spring里程碑倉庫,如下例所示
-
Maven
-
Gradle
<repositories>
<!-- ... possibly other repository elements ... -->
<repository>
<id>spring-milestone</id>
<name>Spring Milestone Repository</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
repositories {
maven { url 'https://repo.spring.io/milestone' }
}