抛出 NullPointerException 异常,原因是在过滤器中无法初始化Bean组件,需要通过上下文获取。
SpringContextUtils工具类
import jakarta.annotation.Nonnull;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* @Description: 用于创建上下文,实现ApplicationContextAware接口
* @Author: 翰戈.summer
* @Date: 2023/11/17
* @Param:
* @Return:
*/
@Component
public class SpringContextUtils implements ApplicationContextAware {
private static ApplicationContext applicationContext;
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
@Override
public void setApplicationContext(@Nonnull ApplicationContext applicationContext) throws BeansException {
SpringContextUtils.applicationContext = applicationContext;
}
@SuppressWarnings("unchecked")
public static <T> T getBean(String name) throws BeansException {
if (applicationContext == null) {
return null;
}
return (T) applicationContext.getBean(name);
}
}
使用方法
通过 SpringContextUtils 工具类中的 getBean 方法可以获取 Bean 组件,需要指定 Bean 组件的名称,例如:
JwtUtils jwtUtils = SpringContextUtils.getBean("jwtUtils");