zoukankan      html  css  js  c++  java
  • ApplicationListener接口,在spring容器初始化后执行的方法

    一、如果我们希望在Spring容器将所有的Bean都初始化完成之后,做一些操作,那么就可以使用ApplicationListener接口,实现ApplicationListener接口中的onApplicationEvent方法,此方法会在容器中所有bean初始化完成后执行。

    @Component
    public class MyApplicationListener implements ApplicationListener<ContextRefreshedEvent> {
        @Autowired
        private ApplicationContext applicationContext;
    
        @Override
        public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
            System.out.println("容器初始化完成。。。。。。。。");
            
        }
    }

    二、在web开发中,会存在一个问题,系统会存在两个容器,一个是spring的ioc容器(父),一个是springmvc的ioc容器(子),这两个容器是父子关系。这样就会造成onApplicationEvent方法被执行两次。为了解决此问题,我们可以判断当前容器是否父容器,是父容器才执行下边的代码。步骤如下:通过参数contextRefreshedEvent获取容器对象,在根据容器对象获取其父容器,如果父容器为空,则说明当前容器是父容器。

    @Component
    public class MyApplicationListener implements ApplicationListener<ContextRefreshedEvent> {
        @Autowired
        private ApplicationContext applicationContext;
    
        @Override
        public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
            ApplicationContext parent = contextRefreshedEvent.getApplicationContext().getParent();
            if (parent == null){
                System.out.println("容器初始化完成。。。。。。。。");
            }
    
        }
    }
  • 相关阅读:
    node
    github
    [模块] pdf转图片-pdf2image
    python 15 自定义模块 随机数 时间模块
    python 14 装饰器
    python 13 内置函数II 匿名函数 闭包
    python 12 生成器 列表推导式 内置函数I
    python 11 函数名 迭代器
    python 10 形参角度 名称空间 加载顺序
    python 09 函数参数初识
  • 原文地址:https://www.cnblogs.com/bear7/p/13657379.html
Copyright © 2011-2022 走看看