美文网首页
在静态方法中使用Spring上下文

在静态方法中使用Spring上下文

作者: SevenLin1993 | 来源:发表于2017-04-01 10:39 被阅读309次

    使用场景

    • 在某些工具类中需要使用Spring的ApplicationContext来获取相关的Bean来实现
    • 静态方法需要使用静态成员变量,而如果是静态的ApplicationContext没法通过@Autowired等注解注入进来

    通过ApplicationContextAware获取ApplicationContext

    ApplicationContextAwareSpring中提供的接口,实现该接口的类Spring将会把ApplicationContext通过setApplicationContext方法注入该类。

    @Component
    public class CxtDemo implements ApplicationContextAware {
    
        private ApplicationContext applicationContext;
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            this.applicationContext = applicationContext;
        }
    }
    

    在静态方法中使用

    通过上述方法我们已经拿到ApplicationContext,这样的话我们我们只需把类成员声明为static就可以

    @Component
    public class CxtDemo implements ApplicationContextAware {
    
        private static ApplicationContext applicationContext;
        
        //静态方法
        public static Object doSomethings(){
            // you can use applicationContext here  
            ...
        } 
    
        // 提供获取方法
        public static ApplicationContext applicationContext(){
           return applicationContext;
        }
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            this.applicationContext = applicationContext;
        }
    }
    

    相关文章

      网友评论

          本文标题:在静态方法中使用Spring上下文

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