美文网首页
spring boot 获取ApplicationContext

spring boot 获取ApplicationContext

作者: 鱼唇的人类 | 来源:发表于2017-03-10 15:34 被阅读0次

    使用springboot开发时,有一个需求是在过滤器filter中判断用户登录的信息,于是我写了一个UserService,并且在过滤器中实现自动装配(@Autowired)。使用springboot自带的服务器启动时没有问题,但是使用外部的Tomcat启动时就不能实现自动装配了,报NullPointerException错误。搞了半天不知道什么原因,我就想到用ApplicationContext的方式来获取UserService,具体如下:

    1. 新建SpringContext类(这个类要和springboot启动类放一起):
    @Component
    @Lazy(false)
    public class SpringContext implements ApplicationContextAware {
        private static ApplicationContext applicationContext;
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            this.applicationContext = applicationContext;
        }
        public static ApplicationContext getApplicationContext() {
            return applicationContext;
        }
        public static Object getBean(String name) {
            return getApplicationContext().getBean(name);
        }
        public static <T> T getBean(Class<T> clazz) {
            return getApplicationContext().getBean(clazz);
        }
        public static <T> T getBean(String name, Class<T> clazz) {
            return getApplicationContext().getBean(name, clazz);
        }
    }
    
    1. 使用:
    //通过class获得bean
    UserService userService= SpringContext.getBean(UserService.class);
    //通过name获得bean
    UserService userService= SpringContext.getBean("userService");
    //通过name,以及Clazz返回指定的Bean
    UserService userService= SpringContext.getBean("userService",UserService.class);
    

    相关文章

      网友评论

          本文标题:spring boot 获取ApplicationContext

          本文链接:https://www.haomeiwen.com/subject/dbzngttx.html