今天 遇到这样一个问题:
工程A中我写写了一个spring security的自定义认证类,这个类始终不能由容器管理,但是这个时候 我需要通过spring 自动注入某个服务类来获取用户相关信息 来进行认证)
问题出现在:
自定义认证类不是由容器管理的 那么在类里面使用@Autowried这些都是没有用的,服务是注入不进来的
解决方案:
在自定义认证类中手动初始化 容器,从容器中用getBean的方式来获取类


public class MyUserDeatilsService implements UserDetailsService {

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        //手动初始化容器类 如果配置用的java类配置方式 就是 AnnotationConfigApplicationContext
        ApplicationContext cnt = new ClassPathXmlApplicationContext("classpath:config/*.xml");
        ISellerService sellerService = (ISellerService) cnt.getBean("sellerService");

        System.out.println("springSecurity 自定义认证类");
        //后面代码省略
        }
   }
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐