`
SonofGod
  • 浏览: 20760 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

spring 容器初始化后初始化执行方法

阅读更多

转自:

http://blog.csdn.net/fatherican/article/details/9130165

 

 

  在某些应用中,我们希望,当spring 容器将所有的bean都初始化完成后,做一个操作(例如:将数据库中的字典,加载到内存中),这时我们可以实现一个接口,如下:

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

        同时实例化该bean:    

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

 

        但是这个时候,会存在一个问题,在web 项目中(spring mvc),系统会存在两个容器,一个是root application context ,另一个就是我们自己的 projectName-servlet  context(作为root application context的子容器)。

这种情况下,就会造成onApplicationEvent方法被执行两次。为了避免上面提到的问题,我们可以只在root application context初始化完成后调用逻辑代码,其他的容器的初始化完成,则不做任何处理,修改后代码

如下:

 

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

相关推荐

    Spring的IoC容器初始化源码解析

    ### Spring的IoC容器初始化源码解析 #### 一、Spring框架的核心——IoC容器 Spring框架是一个开源的轻量级Java开发框架,其核心功能是IoC(Inversion of Control,控制反转)容器和AOP(Aspect Oriented ...

    Spring Bean创建初始化流程.docx

    在Spring框架中,Bean的创建和初始化是IoC(Inversion of Control)容器的核心功能,这一过程涉及到多个步骤。以下是对Spring Bean创建初始化流程的详细解释: 1. **初始化ApplicationContext**: 开始时,通过`...

    spring容器初始化bean和销毁bean之前进行一些操作的方法

    本文将深入探讨如何在Spring容器初始化Bean和销毁Bean前后执行自定义的操作,以便于进行日志记录、资源清理等任务。 首先,我们需要了解Spring中Bean的生命周期。Bean的生命周期大致分为以下阶段: 1. 实例化:...

    详解Spring 中如何控制2个bean中的初始化顺序

    Spring 中控制 2 个 bean 的初始化顺序 在 Spring 框架中,控制多个 bean 的初始化顺序是一个常见的问题。本篇文章将详细介绍如何控制 2 个 bean 的初始化顺序,提供了多种实现方式,并分析了每种方式的优缺。 ...

    SpringBoot项目启动时实现调用一次初始化方法.docx

    `@PostConstruct`是Java EE规范的一部分,它用于标记一个方法,这个方法将在对象被Spring容器初始化完成后、所有依赖注入完成并且在该对象的`init()`方法之前调用。使用`@PostConstruct`注解的方法只会被调用一次,...

    浅谈spring容器中bean的初始化

    1. **装载Bean定义**:Spring容器读取XML配置文件,解析Bean的定义,包括其类型、依赖关系、初始化方法等。 2. **创建Bean实例**:根据`lazy-init`属性决定是否立即创建实例。对于`singleton`作用域的Bean,无论`...

    Spring bean初始化及销毁你必须要掌握的回调方法.docx

    当Spring容器创建并初始化Bean时,会寻找带有@PostConstruct注解的方法并执行。 2. **InitializingBean接口** 如果一个Bean实现了Spring的InitializingBean接口,那么它必须重写`afterPropertiesSet()`方法。此...

    Java项目开发用的公用基础模块,包括:Spring容器初始化、配置文件读取工具类、分页对象、Protobuf工具类、反射工具类

    Java项目开发用的公用基础模块,包括:Spring容器初始化、配置文件读取工具类、分页对象、Protobuf工具类、反射工具类等

    获取spring容器的方法

    ### 获取Spring容器的方法详解 在Java开发中,Spring框架因其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect Oriented Programming, AOP)功能而被广泛使用。掌握如何获取Spring容器对于管理和...

    Spring 容器后处理器

    在Spring框架中,容器后处理器(BeanFactoryPostProcessor)是一种非常实用的设计模式,主要用于在容器初始化完成后对容器进行额外的定制操作。这种设计模式不仅提高了系统的灵活性,还增强了系统的可配置性。 ####...

    spring容器初始化遇到的死锁问题解决

    Spring 容器初始化遇到的死锁问题...Spring 容器初始化遇到的死锁问题可以通过避免在 afterPropertiesSet() 方法中开启线程,使用异步执行机制来解决。同时,需要注意线程的执行机制和锁机制,以避免死锁问题的出现。

    简单Spring容器实现

    - **Bean的生命周期管理**:包括初始化、使用和销毁等阶段,Spring提供了回调方法供开发者扩展。 3. **简易Spring容器实现** - **初始化容器**:创建一个实现`ApplicationContext`接口的类,比如`...

    Spring简单模拟Spring容器

    4. 实现容器的初始化方法,加载Bean定义,并根据定义创建Bean实例。 5. 实现依赖注入,可以通过反射或者构造函数注入来完成。 6. 添加获取Bean实例的方法,模拟Spring容器的getBean功能。 在标签中提到了“源码”和...

    深度解析spring容器管理bean

    初始化回调是指在Bean实例化后、开始使用前执行的方法,可以通过`init-method`属性指定。销毁回调则是在Bean不再使用、即将被销毁时调用的方法,可通过实现DisposableBean接口或`destroy-method`属性设置。 此外,...

    spring容器学习笔记

    3.1. 初始化方法当我们想要在 Bean 创建完成后执行特定的初始化逻辑时,可以在 Bean 的配置中声明 init-method 属性。这个属性的值是待调用的初始化方法的名字。例如: ```xml ``` 在 `MyBean` 类中,我们需要有...

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息

    3. 或者,你可以在初始化阶段,通过静态工厂方法或单例模式获取并保存`ApplicationContext`,以便后续使用。 一旦有了`ApplicationContext`,就可以通过`getBean()`方法获取所需的Bean。例如,如果你有一个名为`...

    Spring容器初始化及问题解决方案

    主要介绍了Spring容器初始化及问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Spring容器的通俗理解及简单写法

    4. **管理生命周期**: Spring容器能够管理Bean的生命周期,包括初始化、销毁等。在简单的实现中,可以添加方法来模拟这些生命周期回调。 5. **依赖注入**: 最后,通过反射调用setter方法或构造函数,将依赖注入到...

    获取Spring容器

    一旦`ApplicationContextUtil`被配置并初始化,就可以通过调用其静态方法`getBean`来获取任何注册在Spring容器中的Bean。例如,可以通过以下代码获取`VerifyBankTransRecvService`服务: ```java ...

Global site tag (gtag.js) - Google Analytics