獲取 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.