You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Security升级至5.8.4后仍用5.7.9的HttpSecurity是否正常?

Spring Security升级后版本不一致问题解答

结论

这种情况不正常,本质是依赖版本冲突导致的。

原因分析

Spring Boot 2.7.13的官方依赖管理中,默认绑定的Spring Security版本是5.7.9。你当前的配置存在以下问题:

  • 手动指定了spring-security-web、spring-security-oauth2-client、spring-security-core的版本为5.8.4,但spring-security-config未指定版本,会自动继承Spring Boot提供的5.7.9版本
  • @EnableWebSecurity注解正是来自spring-security-config包,因此你看到的是5.7.9版本;如果HttpSecurity也显示5.7.9,大概率是IDE缓存了旧依赖,或者存在其他间接依赖引入了5.7.9的spring-security-web

解决办法

  1. 统一Spring Security版本(推荐)
    不要单独为每个Spring Security组件指定版本,而是通过Spring Boot的全局属性统一覆盖版本,确保所有组件版本一致。在pom.xml中添加:

    <properties>
        <spring-security.version>5.8.4</spring-security.version>
    </properties>
    

    之后可以删除各个Spring Security依赖中的<version>标签,由Spring Boot自动管理版本。

  2. 检查并修复依赖冲突
    执行Maven命令查看完整依赖树,定位引入旧版本Spring Security的来源:

    mvn dependency:tree | grep spring-security
    

    找到冲突的依赖后,通过<exclusions>标签排除旧版本的引入,例如:

    <dependency>
        <!-- 存在冲突的依赖 -->
        <groupId>xxx</groupId>
        <artifactId>xxx</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-config</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  3. 清理IDE缓存
    执行Maven的clean和compile命令:

    mvn clean compile
    

    然后刷新IDE的Maven依赖(如IntelliJ IDEA中的「Reload All Maven Projects」),确保IDE加载最新的依赖版本。

注意事项

Spring Boot 2.7.x与Spring Security 5.8.x完全兼容,这次升级是为迁移到Spring Security 6做准备的合理操作,统一版本后即可正常使用5.8.4的特性。

内容的提问来源于stack exchange,提问作者chocokoala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:57:46