spring 事件機制


spring的事件機制采用了觀察者設計模式。

關鍵點在於ApplicationContext的兩個成員:ApplicationEvent ApplicationListenter。

很顯然ApplicatonEvent是java事件在Spring中的實現,用戶要自定義一個spring事件,只需要繼承自ApplicatonEvent;而ApplicationListener則是一個監聽器,用戶的自定義監聽器同樣需要實現ApplicationListener接口,並重寫onApplicationEvent(ApplicationEvent event)方法。

定義完事件和監聽器后需要在spring中進行配置。很簡單,就是將監聽器配置為一個bean:<bean class="com.lincoln.spring.EmailListener"/>。

第三步,觸發事件:直接調用ApplicationContext的publishEvent(event)方法。

實例如下:

1、定義一個event:

 

public class EmailEvent extends ApplicationContextEvent{
    public EmailEvent(ApplicationContext source){
        super(source);
    }
    
    private String address ;
    private String content ;
    public void setAddress(String address) {
        this.address = address;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public String getAddress() {
        return address;
    }
    public String getContent() {
        return content;
    }
}

 

2、定義一個listener

public class EventListener implements ApplicationListener{

    public void onApplicationEvent(ApplicationEvent event) {
        if( event instanceof EmailEvent ){
            EmailEvent ee = (EmailEvent)event ;
            System.out.println("the email's address is "+ee.getAddress()+
                    "\n content is "+ee.getContent());
        }
    }
    
}

 

3、配置文件

<bean id="eventListener" class="com.lincoln.event.EventListener" ></bean>

 

4、測試類:

public class TestEvent {
    @Test
    public void testEvent()
    {
        ApplicationContext context = new ClassPathXmlApplicationContext("com/lincoln/event/event.xml");
        EmailEvent event = new EmailEvent(context);
        event.setAddress("licolnsPei@gmail.com");
        event.setContent("Hello,spring ; I will fuck you !");
        context.publishEvent(event);
    }
}

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM