4.获得Spring Security之二-Spring Security用户手册-Java-IT技术博客

4.2与Maven结合使用

与大多数开源项目一样,Spring Security将其依赖项部署为Maven工件。 本节中的主题提供有关使用Maven时如何使用Spring Security的详细信息。


4.2.1使用Maven的Spring Boot

Spring Boot提供了一个spring-boot-starter-security入门程序,它将Spring Security相关的依赖项聚合在一起。 使用启动程序的最简单且首选的方法是通过使用IDE集成(EclipseIntelliJNetBeans)或通过https://start.spring.io使用Spring Initializr


另外,您可以手动添加启动器,如以下示例所示:


示例4.1 pom.xml

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

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


示例4.2 pom.xml

<properties>
    <!-- ... -->
    <spring-security.version>5.2.2.BUILD-SNAPSHOT</spring-security.version>
</dependencies>

由于Spring Security仅在主要版本中进行重大更改,因此可以将较新版本的Spring Security与Spring Boot一起使用是安全的。 但是,有时您可能还需要更新Spring Framework的版本。 您可以通过添加Maven属性来执行此操作,如以下示例所示:


示例4.3 pom.xml

<properties>
    <!-- ... -->
    <spring.version>5.2.1.RELEASE</spring.version>
</dependencies>

如果使用其他功能(例如LDAP,OpenID和其他功能),则还需要包括相应的第6章,项目模块。


4.2.2没有Spring Boot的Maven

使用不带Spring Boot的Spring Security时,首选方法是使用Spring Security的BOM,以确保在整个项目中使用一致的Spring Security版本。 以下示例显示了如何执行此操作:


示例4.4 pom.xml

<dependencyManagement>
    <dependencies>
        <!-- ... other dependency elements ... -->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-bom</artifactId>
            <version>5.2.2.BUILD-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

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


示例4.5 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>

如果使用其他功能(例如LDAP,OpenID和其他功能),则还需要包括相应的第6章,项目模块。


Spring Security是根据Spring Framework 5.2.1.RELEASE构建的,但通常应与任何较新版本的Spring Framework 5.x一起使用。 Spring Security的可传递依赖项解决了Spring Framework 5.2.1.RELEASE的事实,这可能会引起奇怪的类路径问题,因此许多用户可能会误以为是。 解决此问题的最简单方法是在pom.xml<dependencyManagement>部分中使用spring-framework-bom,如以下示例所示:


示例4.6 pom.xml

<dependencyManagement>
    <dependencies>
        <!-- ... other dependency elements ... -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>5.2.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

前面的示例确保Spring Security的所有传递依赖项都使用Spring 5.2.1.RELEASE模块。

这种方法使用了Maven的“物料清单”(BOM)概念,并且仅在Maven 2.0.9+中可用。 有关如何解决依赖关系的其他详细信息,请参阅Maven的“依赖关系机制简介”文档。

4.2.3 Maven存储库

所有GA版本(即以.RELEASE结尾的版本)均已部署到Maven Central,因此无需在pom中声明其他Maven存储库。


如果使用SNAPSHOT版本,则需要确保定义了Spring Snapshot存储库,如以下示例所示:


示例4.7 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>

如果使用里程碑版本或候选版本,则需要确保定义了Spring Milestone存储库,如以下示例所示:


示例4.8 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>


标签: 教程Spring SecuritySpring文档手册