Spring-Application Event自定义事件

Application Event

Spring的事件为Bean与Bean之间的消息通信提供了支持。当一个Bean处理完一个任务之后,希望另外一个Bean知道并能做相应的处理,这时我们就需要让另外一个Bean监听Bean所发送的事件。
Spring的事件需要遵循如下流程:
(1) 自定义事件,集成ApplicationEvent。
(2)定义事件监听器,实现ApplicationListener。
(3)使用容器发布事件。

自定义事件:

继承ApplicationEvent,msg用于记录接受的事件消息

public class testEvent extends ApplicationEvent{

private static final long serialVersionUID = 1L;
private String msg;

public testEvent(Object source,String msg) {
	super(source);
	// TODO Auto-generated constructor stub
	this.msg=msg;
}

public String getmsg() {
	return this.msg;
}

}

定义事件监听器

实现接口ApplicationListener并指定监听的事件类型

编写onApplicationEvent方法,实现触发事件操作

@Component
public class testListener implements ApplicationListener<testEvent>{

public void onApplicationEvent(testEvent event) {
	// TODO Auto-generated method stub
	System.out.println("触发事件");
}
}

实现如何触发事件

实现接口ApplicationContextAware
编写方法setApplicationContext

@Component
public class testbean implements ApplicationContextAware  {

private ApplicationContext a=null;          
public void run() {
	System.out.println("XXX   run....");
	testEvent t=new testEvent(a, "传入事件信息");      //在容器中生成事件
	a.publishEvent(t);   			//触发事件
}

//创建容器
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
	// TODO Auto-generated method stub
	this.a=applicationContext;
}
}

由于在服务启动中Spring容器已经启动,可以通过自动注入方式注入ApplicationContext。

@Component
public class testbean {
@Autowired
private ApplicationContext a;        //自动注入ApplicationContext
public void run() {
	System.out.println("XXX....");
	testEvent t=new testEvent(a, "run");
	a.publishEvent(t);     	//触发事件
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值