spring security(坑)实现AuthenticationProvider接口@Autowired注入UserDetailsService值为空的情况
实现自定义登录类是注入UserDetailsService接口获取不到的值的问题
第一种
在继承WebSecurityConfigurerAdapter配置类时通过这个方法使用构造器的形式直接注入
/**
* 登录时执行这个方法
* @param auth
* @throws Exception
*/
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(new CustomAuthenticationProvider(userDetailsService,bCryptPasswordEncoder));
}
第二种
直接通过Spring的上下文中直接获取到需要用到的类
/**
* @Classname SpringContextUtil
* @Description 此工具类用于从Spring的上下文中去获取到类
* 调用的时候例如:private CommonService commonService = SpringContextUtil.getContext().getBean(CommonService.class);
* @Date 2019/11/4 2:00 PM
*/
@Component
public final class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
context = applicationContext;
}
public static ApplicationContext getContext() {
return context;
}
}