Spring自定義事件

2021-08-08 22:11:03 字數 2513 閱讀 2323

如果僅僅使用

spring

的內定事件,那顯然是遠遠不夠的,幸好,

spring

為我們提供了中自定義發布事件的能力。下面通過例程

來展示如何發布並監聽自定義的事件。

在工程中,我們定義乙個

animal

類,為受管

bean

,它具有乙個

speak

方法,我們要做的就是監視該方法,當使用者呼叫該方法時觸發

animalspeakevent

事件。具體操作如下: 1

package

ioc.test;23

import45

public

class

animalspeakevent 

extends67

private

static

final

long

serialversionuid =1l

;89private

string animalname;

1011

public

animalspeakevent(object source) 

1415

public

animalspeakevent(object source,string animalname) 

1920

public

string getanimalname() 

2324}25

建立好該事件類後,就應該把它再合適的時候發布出去。既然它時乙個「動物講話事件」,那麼就應該再動物「講話」的時候發布,如何發布呢?我們知道要發布乙個事件,就必須要呼叫

的publishevent

方法。要在

animal

類中獲得

的例項,就要實現

介面,**如下: 1

package

ioc.test;23

//import省略45

public

class

animal 

implements67

private89

private

string name;

1011

private

intage;

1213

public

string speak()

1819

20public

void

throws

bean***ception 

2324

//getet和seter省略

2526}27

到目前為之,我們已經在

animal

類中把事件發布出去了,現在要監聽該事件的發生了,至於監聽方法,前面已經演示過,直接上**: 1

ackage ioc.test;23

import

4import56

public

class

animaleventlistener 

implements78

public

void9if

(event 

instanceof

animalspeakevent) 13}

14}15

配置好bean

,為animalbean

注入值,配置檔案如下: 1

xml version="1.0" encoding="utf-8"

?>

2<

beans  

…………

>34

<

bean 

id="listener"

class

="ioc.test.animaleventlistener"

/>56

<

bean 

id="animal"

class

="ioc.test.animal"

>

7<

property 

name

="name"

value

="老虎"

/>

8<

property 

name

="age"

value

="5"

/>

9bean

>

1011

beans

>12

現在應該來測試一下了,看看我們的自定義的事件是不是會再動物「講話」的時候發生,測試類

testmain

**如下: 1

package

ioc.test;23

import

4import56

public

class

testmain 19}

20 執行該類中的主方法,輸出結果如下:

可以看到,再動物「講話「之前,我們的事件***監聽到「動物講話」,並輸出了講話動物的名字。

spring 自定義事件

首先我們先寫乙個自定義的登入事件。loginformevent.as package com.events 包,可以理解成目錄,在com events 下 flex中的方法重寫原來是這個樣,就順便寫到這了。override public function clone event 然後我們就寫自定義元...

Spring自定義監聽事件

可以監聽物件的建立資料。自定義監聽事件可以監聽容器變化,同時也能精確定位指定事件物件,我們編寫乙個案例演示自定義監聽事件實現流程。定義事件監聽物件 messagenotifier import org.springframework.context.event.contextrefreshedeve...

自定義事件

public event eventhandleropenprogress private void onopenprogress progresseventargs e if openprogress null openprogress this,e public class progressev...