启动Maven应用时出现HttpSecurity类型Bean找不到的问题
问题分析与解决
错误信息
No qualifying bean of type 'org.springframework.security.config.annotation.web.builders.HttpSecurity' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
原因分析
你当前使用的Spring Security版本是5.3.4(对应Spring Boot 2.3.3),而配置类中通过SecurityFilterChain Bean直接注入HttpSecurity的写法,是Spring Security 5.4及以上版本才支持的特性。5.3.x版本中Spring容器不会自动创建HttpSecurity类型的Bean,因此找不到符合条件的注入对象,导致启动报错。
解决方案
有两种处理方式:
方式一:适配当前版本(不升级依赖)
改用Spring Security 5.3.x对应的配置方式,继承WebSecurityConfigurerAdapter并重写configure方法:
@Configuration(proxyBeanMethods = false) public class SecurityConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.requestMatcher(EndpointRequest.toAnyEndpoint()) .authorizeRequests((requests) -> requests.anyRequest().permitAll()); } }
方式二:升级依赖版本
将Spring Boot版本升级到2.4.0.RELEASE及以上(对应Spring Security 5.4+),即可支持你原有的SecurityFilterChain写法。修改pom.xml中的spring-boot-starter-parent版本后,执行mvn clean install更新依赖即可。
内容的提问来源于stack exchange,提问作者cucuru
相关产品推荐
相关产品推荐

