ApplicationListener的使用

今天在看spring mvc源代码的时候, 发现在初始化过程中使用到了Listener机制。所以就打算来学习下ApplicationListener。

设计到的类和接口

  • ApplicationEvent
  • ApplicationListener
  • ApplicationContextAware

下面简单介绍下使用步骤

  1. 自定义一个SpecEvent 继承 ApplicationEvent, 实例变量Object source可以保存时间需要传递的信息。
  2. 自定义一个SpecApplicationContextListener 实现 ApplicationListener<SpecEvent> 接口, 注册成spring bean。
  3. 让需要发布SpecEvent的类实现ApplicationContextAware接口, 使具有感知ApplicationContext的能力, spring 会负责注入。发布事件,Listener就会被回调。

底层的话是使用观察者模式。 ApplicationContext是主题, ApplicationContextListener是观察者。 两者的依赖是ApplicationContextListener接口。

可以用来记录登录登出日志。

时间: 2024-12-15 05:33:19

ApplicationListener的使用的相关文章

ApplicationListener接口中的onApplicationEvent被调用两次解决方案

Spring容器初始化完成后,调用BeanPostProcessor这个类,这个类实现ApplicationListener接口,重写onApplicationEvent方法, 方法中就是我们自己要在容器初始化完成后加载的数据或者缓存. 下面是XML配置: 下面是自己写的BeanPostProcessor类: 下面是启动Tomcat后,重复加载了数据,调用了两次onApplicationEvent方法: 蓝色部分中的: Root WebApplicationContext和WebApplicat

ApplicationListener接口中的onApplicationEvent被调用两次解决方式

Spring容器初始化完毕后,调用BeanPostProcessor这个类,这个类实现ApplicationListener接口,重写onApplicationEvent方法, 方法中就是我们自己要在容器初始化完毕后载入的数据或者缓存. 以下是XML配置: 以下是自己写的BeanPostProcessor类: 以下是启动Tomcat后.反复载入了数据,调用了两次onApplicationEvent方法: 蓝色部分中的: Root WebApplicationContext和WebApplicat

Spring透过ApplicationListener来触发contextrefreshedevent事件

Spring通过ApplicationListener接口来触发contextrefreshedevent事件在开发时有时候需要在整个应用开始运行时执行一些特定代码,比如初始化环境,准备测试数据.加载一些数据到内存等等. 在Spring中可以通过ApplicationListener来实现相关的功能,加载完成后触发contextrefreshedevent事件(上下文件刷新事件) 例如:定时任务 上述中解决了一个问题: 会存在一个问题,在web 项目中(spring mvc),系统会存在两个容器

web服务启动spring自己主动运行ApplicationListener的使用方法

我们知道.一般来说一个项目启动时须要载入或者运行一些特殊的任务来初始化系统.通常的做法就是用servlet去初始化.可是servlet在使用spring bean时不能直接注入,还须要在web.xml配置.比較麻烦.今天介绍一下使用spring启动初始化的方法.事实上非常easy,仅仅需两步就能够了. 实现ApplicationListener接口: public class Init implements ApplicationListener<ContextRefreshedEvent>{

Spring 的 ApplicationEvent and ApplicationListener

什么是ApplicationContext? 它是Spring的核心,Context我们通常解释为上下文环境,但是理解成容器会更好些. ApplicationContext则是应用的容器. Spring把Bean(object)放在容器中,需要用就通过get方法取出来. ApplicationEvent 是个抽象类,里面只有一个构造函数和一个长整型的timestamp. ApplicationListener 是一个接口,里面只有一个onApplicationEvent方法. 所以自己的类在实现

用实现ApplicationListener来实现项目启动时运行某些程序的注意事项

起初在网上搜索在项目启动时运行某些程序时,看到其中有用实现ApplicationListener来做的一种方法,当时没有直接复制他们的代码,而是手动写的.如下: package com.han.listener; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.context.ApplicationListener; import org.springframework.co

springboot + ApplicationListener

ApplicationListener自定义侦听器类 @Component public class InstantiationTracingBeanPostProcessor implements ApplicationListener<ContextRefreshedEvent> { private static final Logger LOG = Logger.getLogger(InstantiationTracingBeanPostProcessor.class); private

Spring InitializingBean和ApplicationListener&lt;ContextRefreshedEvent&gt;

事件机制作为一种编程机制,在许多语言中都提供了支持.JAVA语言也不例外,java中的事件机制的参与者有3种角色: 1.event object 2.event source 3.event listener这三个角色的含义字面上很好解,它们就定义了事件机制的一个基本模型.作为一种常用的编程设计机制,许多开源框架的设计中都使用了事件机制.SpringFramework也不例外,下面着重阐述个人对spring中的事件机制的一些理解.其中一个主要的使用场景是用在IOC的容器的启动过程,当所有的bea

Spring 的监听事件 ApplicationListener 和 ApplicationEvent 用法

什么是ApplicationContext? 它是spring的核心,Context我们通常解释为上下文环境,但是理解成容器会更好些. ApplicationContext则是应用的容器. Spring把Bean(object)放在容器中,需要用就通过get方法取出来. ApplicationEvent 是个抽象类,里面只有一个构造函数和一个长整型的timestamp. ApplicationListener 是一个接口,里面只有一个onApplicationEvent方法. 所以自己的类在实现