当spring 容器初始化完成后执行某个方法

Posted 叶威1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当spring 容器初始化完成后执行某个方法相关的知识,希望对你有一定的参考价值。

在做web项目开发中,尤其是企业级应用开发的时候,往往会在工程启动的时候做许多的前置检查。

比如检查是否使用了我们组禁止使用的mysql的group_concat函数,如果使用了项目就不能启动,

并指出哪个文件的xml文件使用了这个函数。而在Spring的web项目中,我们可以介入Spring的启动过程。

我们希望在Spring容器将所有的Bean都初始化完成之后,做一些操作,这个时候我们就可以实现一个接口:

方法一、

1 2 3 4 5 6 7 package  com.leadsoft.test.executor.processor public  class  InstantiationTracingBeanPostProcessor  implements  ApplicationListener<ContextRefreshedEvent> @Override public  void  onApplicationEvent(ContextRefreshedEvent event) //需要执行的逻辑代码,当spring容器初始化完成后就会执行该方法。

  



  同时在Spring的配置文件中,添加注入:

1 2 <!-- 当Spring容器启动完成后执行下面的这个Bean --> <bean  class = "com.leadsoft.test.executor.processor.InstantiationTracingBeanPostProcessor" />

  

  

但是这个时候,会存在一个问题,在web 项目中(spring mvc),系统会存在两个容器,

一个是root application context ,

另一个就是我们自己的 projectName-servlet context(作为root application context的子容器)。

这种情况下,就会造成onApplicationEvent方法被执行两次。

为了避免上面提到的问题,我们可以只在root application context初始化完成后调用逻辑代码,

其他的容器的初始化完成,则不做任何处理,修改后代码

如下:

 

1 2 3 4 5 6 @Override public  void  onApplicationEvent(ContextRefreshedEvent event) //root application context 没有parent,他就是老大.
if (event.getApplicationContext().getParent() ==  null ) //需要执行的逻辑代码,当spring容器初始化完成后就会执行该方法。

方法二、  

其实更简单的方法是使用注解:`@PostConstruct`,

只需要在需要启动的时候执行的方法上标注这个注解就搞定了。

注解描述如下:

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 /*   * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.   * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   * spring容器加载完成执行某个方法

spring再tomcat启动后,初始化完成后,自动执行一次某个类,怎么做

Spring实战Spring容器初始化完成后执行初始化数据方法

Spring实战Spring容器初始化完成后执行初始化数据方法

SpringBoot启动后执行某个方法

spring启动容器加载成功后执行调用方法

(c)2006-2019 SYSTEM All Rights Reserved IT常识