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

Spring中ApplicationContext的事件机制(二 内定事件)

 
阅读更多
在Spring中已经定义了五个标准事件,分别介绍如下:

1)ContextRefreshedEvent:当ApplicationContext初始化或者刷新时触发该事件。

2)ContextClosedEvent:当ApplicationContext被关闭时触发该事件。容器被关闭时,其管理的所有单例Bean都被销毁。

3) RequestHandleEvent:在Web应用中,当一个http请求(request)结束触发该事件。
ContestStartedEvent:Spring2.5新增的事件,当容器调用ConfigurableApplicationContext的Start()方法开始/重新开始容器时触发该事件。

5)ContestStopedEvent:Spring2.5新增的事件,当容器调用ConfigurableApplicationContext的Stop()方法停止容器时触发该事件。

下面通过一个例子展示如何处理Spring内定的事件(例程3.8)。创建一个Java工程,添加Spring开发能力后,新建ioc.test包。在包中新建ApplicationEventListener类,实现ApplicationListener接口,在onApplicationEvent()方法中添加事件处理代码,如下:

package ioc.test;
 2 
 3 //Import省略
 4 public class ApplicationEventListener implements ApplicationListener {
 5 
 6     public void onApplicationEvent(ApplicationEvent event) {
 7 
 8         //如果是容器刷新事件
 9         if(event instanceof ContextClosedEvent ){
10             System.out.println(event.getClass().getSimpleName()+" 事件已发生!");    
11         }else if(event instanceof ContextRefreshedEvent ){//如果是容器关闭事件
12             System.out.println(event.getClass().getSimpleName()+" 事件已发生!");    
13         }else if(event instanceof ContextStartedEvent ){
14             System.out.println(event.getClass().getSimpleName()+" 事件已发生!");
15         }else if(event instanceof ContextStoppedEvent){
16             System.out.println(event.getClass().getSimpleName()+" 事件已发生!");
17         }else{
18             System.out.println("有其它事件发生:"+event.getClass().getName());
19         }
20                     
21     }
22 
23 }


在Spring配置文件中定义一个Bean,类为ApplicationEventListener,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
 <beans …………    
     <bean id="ApplicationEventListener" class="ioc.test.ApplicationEventListener" />
 
</beans>


添加含有主方法的TesMain类,在主方法中,调用容器的相应方法,触发Spring内定事件,代码如下:

  package ioc.test;
  
  //import省略
  public class TesMain {
  
      public static void main(String[] args) {
          AbstractApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
          
         //    ac.refresh();//触发ContextRefreshedEvent事件            
         ac.start(); //触发ContextStartedEvent事件
         ac.stop();  //触发ContextStoppedEvent事件        
       ac.close(); //关闭容器,触发ContextClosedEvent事件
 
     }
}


【转载地址】
http://www.blogjava.net/cmzy/archive/2008/07/25/217217.html
分享到:
评论

相关推荐

    Spring中ApplicationContext加载机制

    Spring中ApplicationContext加载机制 ApplicationContext 是 Spring 框架中的核心组件之一,负责加载和管理应用程序中的 Bean 对象。在 Web 应用程序中,ApplicationContext 的加载机制是非常重要的, Spring 提供...

    spring的Applicationcontext对事件的监听,实现类似MQ的效果

    在Spring框架中,`ApplicationContext`不仅是一个容器,用于管理Bean的生命周期和依赖注入,它还提供了事件发布和监听的功能。这个特性使得Spring应用能够实现组件间的异步通信,类似于消息队列(MQ)的工作模式。...

    Spring中ApplicationContext对事件传递

    在Spring中,所有自定义事件都需要继承`ApplicationEvent`类。例如,我们可以通过以下方式定义一个用户事件: ```java public class UserEvent extends ApplicationEvent { private String eventContent; public...

    Spring获取ApplicationContext对象工具类的实现方法

    在Spring中,ApplicationContext(应用程序上下文)是容器的核心,负责配置和管理应用中对象的生命周期和依赖关系。在实际开发过程中,经常需要从各个角落获取到这个ApplicationContext对象,以便于能够使用Spring...

    Spring中ApplicationContext和beanfactory区别.rar

    首先,BeanFactory是Spring中最基础的bean管理容器,它遵循Java的工厂设计模式,负责管理和控制bean的生命周期。BeanFactory提供了加载配置元数据、实例化bean、注入依赖、管理bean生命周期等基本功能。当我们在配置...

    使用Spring事件机制实现异步的方法

    在使用Spring事件机制实现异步的方法时,通常需要将事件监听器添加到ApplicationContext中。在上面的代码中,使用@SpringBootApplication的addListeners方法将MyListener添加到ApplicationContext中。 使用@Event...

    三、Spring源码分析——ApplicationContext

    ApplicationContext是Spring框架中的核心组件之一,它是Bean工厂的高级形式,提供了更多企业级的功能。在这个主题中,我们将深入探讨ApplicationContext的内部机制和关键功能。 ApplicationContext的主要职责是加载...

    spring为ApplicationContext提供的3种实现分别为:ClassPathXmlApplicationContext

    在Spring框架中,ApplicationContext是核心接口,它扮演着应用程序上下文的角色,负责管理和提供bean实例。标题提到的"spring为ApplicationContext提供的3种实现",是指Spring框架中用于初始化和管理bean的三种主要...

    spring 获得applicationcontext公用方法

    本文将深入探讨如何在Spring中获取`ApplicationContext`的公用方法,并结合提供的两个文件名`ShipOrderRecipientImpl.java`和`MyApplicationContextUtil.java`来分析可能的实现方式。 1. `ApplicationContext`概述...

    spring事件机制

    在Spring中,事件是由`ApplicationEvent`类或其子类表示的。你可以在自己的项目中定义自定义的事件类型,继承自`ApplicationEvent`。事件监听器则是实现了`ApplicationListener`接口的类,它们会订阅感兴趣的事件,...

    利用spring的ApplicationContext在程序中唤醒quartz的job

    在Spring中,我们通常会通过`@Service`注解标记此类,并使用`@Autowired`注解注入所需的其他服务或DAO。服务类可能会有一个方法来启动或唤醒Quartz Job,这个方法可能会调用Quartz的`Scheduler`接口的相关方法。 接...

    Spring 2.5-applicationContext.xml提示信息的配置

    在Spring框架中,`applicationContext.xml`是应用上下文的核心配置文件,用于定义bean的创建、依赖关系以及各种服务的配置。这篇博文“Spring 2.5 - applicationContext.xml提示信息的配置”主要探讨了如何在Spring ...

    spring3.0 + Quartz1.52 + applicationContext.xml

    这个压缩包“spring3.0 + Quartz1.52 + applicationContext.xml”显然是一个关于如何在Spring 3.0环境中集成Quartz 1.52版本的示例或教程资源。 首先,`applicationContext.xml`是Spring框架的核心配置文件,它定义...

    spring 时间机制

    在Spring中,事件的处理方式有所不同。Spring定义了一个`ApplicationEvent`抽象类,它作为所有自定义事件的基础。这些事件类代表了系统中的特定状态变化或动作,例如服务启动、数据更改等。`ApplicationEvent`包含一...

    深入探索Spring事件监听机制:技术与应用

    在Spring中,事件监听机制由三部分组成:事件(ApplicationEvent)、事件监听器(ApplicationListener)和事件广播器(ApplicationEventMulticaster)。接下来我们将深入探讨这些概念以及如何在实际应用中使用它们。...

    Spring中Bean的生命周期 applicationcontext的应用(实现国际化,事件的传递)

    总的来说,理解并熟练运用Spring中Bean的生命周期和ApplicationContext,能帮助开发者更高效地设计和维护Spring应用,同时利用国际化和事件传递提高应用的灵活性和可扩展性。在实践中,这些概念和机制是构建复杂、...

    spring中监听事件

    本文将深入探讨Spring中的事件监听机制,并通过源码分析来理解其实现原理。 首先,Spring事件是基于Java的`java.util.EventObject`类,它表示一个发生了的事件。Spring扩展了这个概念,创建了`org.springframework....

    Spring的事件监听机制示例详解

    在Spring中,事件发布者可以使用ApplicationContext的publishEvent方法来发布事件,而事件监听者可以使用@EventListener注解来监听事件。 5. Spring事件机制的应用 Spring事件机制有很多实际应用场景,例如: * ...

    Spring配置文件ApplicationContext

    Spring配置文件ApplicationContext,内容齐全,有需要的可以下载。

Global site tag (gtag.js) - Google Analytics