我们在使用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.
*/
@Component
public 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.
*/
@Component
public class MyPublisher {
@Autowired
private ApplicationContext context;
public void pushlier() {
context.publishEvent(new MyEvent(this,"我是信息"));
}
}
在main方法中调用:
MyPublisher myPublisher = context.getBean(MyPublisher.class);
myPublisher.pushlier();