Spring 的事件介绍

来源:互联网 发布:量子处理器 知乎 编辑:程序博客网 时间:2024/05/16 12:33

我们在使用spring做web项目的时候,大部分情况下都是用过将数据保存到request、session、application进行数据的传递,但是其实spring自己有一个信息通信方式,就是通过事件和事件监听器的方式,也可以在bean和bean之间传递数据,使用起来也很简单,就三步:
1.定义事件,需要继承org.springframework.context.ApplicationEvent

package event.ex_event;import org.springframework.context.ApplicationEvent;/** * Created by durendong on 2017/1/16. */public class MyEvent extends ApplicationEvent {    public String getMsg() {        return msg;    }    public void setMsg(String msg) {        this.msg = msg;    }    private String msg;    public MyEvent(Object source,String msg) {        super(source);        this.msg = msg;    }}

2.设置事件监听器,需要实现接口org.springframework.context.ApplicationListener

package event.ex_event;import org.springframework.context.ApplicationEvent;import org.springframework.context.ApplicationListener;import org.springframework.stereotype.Component;/** * Created by durendong on 2017/1/16. */@Componentpublic class Mylistener implements ApplicationListener<MyEvent> {    @Override    public void onApplicationEvent(MyEvent myEvent) {        System.out.println(myEvent.getMsg());    }}

3.发布事件

package event.ex_event;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.stereotype.Component;/** * Created by durendong on 2017/1/16. */@Componentpublic class MyPublisher {    @Autowired    private ApplicationContext context;    public void pushlier() {        context.publishEvent(new MyEvent(this,"我是信息"));    }}

在main方法中调用:

        MyPublisher myPublisher = context.getBean(MyPublisher.class);        myPublisher.pushlier();
0 0
原创粉丝点击