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
解决办法
统一Spring Security版本(推荐)
不要单独为每个Spring Security组件指定版本,而是通过Spring Boot的全局属性统一覆盖版本,确保所有组件版本一致。在pom.xml中添加:<properties> <spring-security.version>5.8.4</spring-security.version> </properties>之后可以删除各个Spring Security依赖中的
<version>标签,由Spring Boot自动管理版本。检查并修复依赖冲突
执行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>清理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
相关产品推荐
相关产品推荐

