zoukankan      html  css  js  c++  java
  • spring中获取ApplicationContext对象的技巧,含源码说明

    第一步,实现接口ApplicationContextAware,重写setApplicationContext方法,下方代码标红的地方,绿色部分 可以通过声明来进行存储到本类中。

    @Component
    public class Test implements ApplicationContextAware{//实现ApplicationContextAware 就可以获取ioc容器
        
        private ApplicationContext applicationContext;
        
        public Test (){
            
            System.out.println("Test constructor");
        }
        
        @PostConstruct
        public void  init(){
            System.out.println("Test @PostConstruct");
        }
        
        @PreDestroy
        public void detory(){
            System.out.println("Test @PreDestroy");
        }
    
        public void setApplicationContext(ApplicationContext applicationContext)//这个方法可以吧ioc容器存进来,我们就可以将applicationContext保存起来
                throws BeansException {
            // TODO Auto-generated method stub
            
            this.applicationContext=applicationContext;
            
        }
        
    
    }

    下面来说一说 这个ApplicationContext 对象时怎么放进来的,

    通过断点 我们看一下ApplicationContextAwareProcessor类实现了BeanPostProcessor类,在下图中的ApplicationContextAwareProcessor类中postProcessBeforeInitialization方法判断类是否实现了如下类,如果有则进入invokeAwareInterfaces方法

     

    invokeAwareInterfaces方法中判断实现类,将applicationContext存入ApplicationContextAwareset方法中,通过set方法我们就可以拿到applicationContext这个ioc对象了

     

  • 相关阅读:
    Vitrualbox虚拟机网络设置
    挂接命令(mount) 【转】
    ubuntu Error mounting /dev/sda6 at /media/xxx...
    mysql命令[转]
    fopen参数
    fprintf&prinft&sprintf
    UNIX 网络编程知识,函数积累
    vim 括号自动补全
    CDbConnection failed to open the DB connection
    [Android_蓝牙]Android4.0蓝牙使能的详细解析
  • 原文地址:https://www.cnblogs.com/locker777/p/10370242.html
Copyright © 2011-2022 走看看