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

Spring Boot Security配置报错UnsatisfiedDependencyException及代码告警问题

问题解决:Spring Security JWT配置中的空指针与过时代码问题

一、空指针错误原因及修复

报错Cannot invoke "Object.getClass()" because "filter" is null的核心原因是jwtAuthFilter未被Spring正确注入,导致实例为null。

修复步骤:

  • 给JwtAuthenticationFilter类添加@Component注解,让Spring扫描并创建该类的实例;
  • 或者在配置类中显式声明该Filter的Bean:
@Bean
public JwtAuthenticationFilter jwtAuthFilter() {
    return new JwtAuthenticationFilter();
}

完成以上操作后,Spring就能正确注入jwtAuthFilter实例,避免空指针问题。

二、过时代码优化

编译器标记的过时问题,是因为Spring Security当前推荐使用Lambda风格配置替代传统的.and()链式调用。以下是优化后的完整配置代码:

package com.myapp.backend.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;

import lombok.RequiredArgsConstructor;

@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfiguration {

    private final AuthenticationProvider authenticationProvider;
    private final JwtAuthenticationFilter jwtAuthFilter;

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .csrf(csrf -> csrf.disable())
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/auth/**").permitAll()
                .anyRequest().authenticated()
            )
            .sessionManagement(session -> session
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            )
            .authenticationProvider(authenticationProvider)
            .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class);

        return http.build();
    }
}

优化点说明:

  • 用Lambda表达式替代.and()调用,配置结构更清晰,符合Spring Security最新规范;
  • 给注入的成员变量添加final修饰符,配合@RequiredArgsConstructor确保构造注入的正确性,避免潜在的空注入问题。

额外检查项

  • 确认AuthenticationProvider同样是Spring管理的Bean(通过@Bean或@Component声明),否则会出现类似的注入失败问题;
  • 确保JwtAuthenticationFilter正确实现了JWT解析与用户认证逻辑,避免后续接口访问时的权限验证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:53:36