Spring 事件監(jiān)聽

快速入門
在spring中只要實(shí)現(xiàn) ApplicationListener 接口 實(shí)現(xiàn) onApplicationEvent 方法。即可完成監(jiān)聽事件, 在event方法中 因?yàn)槭潜O(jiān)聽所有方法 ,在ioc容器中默認(rèn)會(huì)初始化監(jiān)聽器 外加5個(gè)本省具有的方法:下面代碼演示 幾個(gè)常用的系統(tǒng)默認(rèn)的方法,如果要實(shí)現(xiàn)自定義事件類監(jiān)聽,那么 instanof 判定即可 后面的動(dòng)物類演示一個(gè)自定義的事件
總結(jié)步驟:

  1. 實(shí)現(xiàn)ApplicationListener<ApplicationEvent> 并且對(duì)需要事件監(jiān)聽
  2. 實(shí)現(xiàn)ApplicationContextAware 并發(fā)布 事件
    3.構(gòu)建事件類
    4.配置xml

同理要使用,還要配置 bean

       <!-- 監(jiān)聽器 -->
    <bean id="mylistener" class="listener.myListener"></bean>

package listener;

import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.ContextStartedEvent;

public class myListener implements ApplicationListener<ApplicationEvent>{

    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        if (event instanceof ContextStartedEvent) {
             System.out.println("開始執(zhí)行");
        } else if (event instanceof ContextClosedEvent) {
            System.out.println("結(jié)束執(zhí)行");
        }else if (event instanceof ContextRefreshedEvent) {
            System.out.println("刷新事件");
        }       
    }

}

、。- 動(dòng)物類

package entiy;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class Animal implements ApplicationContextAware{
    
    private ApplicationContext ac;

    public void speak(){
        //必須通過ApplicationContext發(fā)布事件
        ac.publishEvent(new AnimalSpeakEvent(ac));
    }

    @Override
    public void setApplicationContext(ApplicationContext arg0)
            throws BeansException {
          this.ac = arg0;       
    }
}

package entiy;

import org.springframework.context.ApplicationEvent;

public class AnimalSpeakEvent extends ApplicationEvent {


    public String getAnimalEvent(){
        return "動(dòng)物事情";
    }
    
    
    public AnimalSpeakEvent(Object source) {
        super(source);
    }
    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

}



xml 中配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">
        <!-- 監(jiān)聽器 -->
    <bean id="mylistener" class="listener.myListener"></bean>
    <bean id="Animal" class="entiy.Animal"></bean>
    <bean id="jdk" class="services.servicesimpl" autowire="byName"> <property name="idao" ref="IDaoImpl"></property></bean>
    <bean id="IDaoImpl" class="basedao.impl.IDaoImpl"></bean>
</beans>

只要在容器中 調(diào)用了這個(gè)方法,就會(huì)觸發(fā)監(jiān)聽器

        Animal animal = (Animal) context.getBean("Animal");
        animal.speak();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,551評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,007評(píng)論 25 709
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,271評(píng)論 6 342
  • 小強(qiáng)油畫閱讀 267評(píng)論 1 0
  • 姓名:陳權(quán) 公司:青檸養(yǎng)車 【知~學(xué)習(xí)】 《財(cái)富自由》音頻打卡第6天 《原則》音頻打卡第5天 《輕課口語》打卡第4...
    水青檸閱讀 152評(píng)論 0 0

友情鏈接更多精彩內(nèi)容