概念/作用
事件是可以被控件识别的操作,如按下确定按钮,选择某个单选按钮或者复选框。每一种控件有自己可以识别的事件,如窗体的加载、单击、双击等事件,编辑框(文本框)的文本改变事,等等。事件有系统事件和用户事件。系统事件由系统激发,如时间每隔24小时,银行储户的存款日期增加一天。用户事件由用户激发,如用户点击按钮,在文本框中显示特定的文本。事件驱动控件执行某项功能。
在事件通过 ApplicationContext.publishEvent发布事件时监听器监听到事件的发布监听器会执行 onApplicationEvent方法
事件的步骤
步骤 | 功能 |
---|---|
1 | 定义事件 |
2 | 定义事件的监听 |
3 | 注册监听器到spring ioc容器 |
4 | 发布事件(监听到该事件的监听器自动进行现关的逻辑处理) |
事件的实现
1、一个事件类 继承ApplicationEvent 类
2、一个监听类 ApplicationListener<继承自ApplicationEvent类的事件类>
第一步创建一个事件类
import org.springframework.context.ApplicationEvent;
/**
* 定义的事件
*
* @author 黄明坤
* @version 1.0.0
* @date 2020/5/19
*/
public class BlackListEvent extends ApplicationEvent {
@Override
public BlackListEvent(Object source) {
super(source);
}
}
第二步创建一个监听器类
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
@Component //将BlackListListener注入到spring ioc容器中
public class BlackListListener implements ApplicationListener<BlackListEvent> {
@Override
public void onApplicationEvent(BlackListEvent event) {
System.out.println("监听到BlackListEvent事件:"+event.getAdddress());
}
}
第三步:发布事件,触发监听
@Controller
public class TestController {
@Autowired
private ApplicationContext applicationContext;
@RequestMapping("testEvent")
@ResponseBody
public Map testEvent(){
BlackListEvent event = new BlackListEvent("test");
event.setAdddress("*****");
applicationContext.publishEvent(event);
Map map = new HashMap();
map.put("1","1");
map.put("2","2");
return map;
}
}
监听器注册还有另外两种实现方式具体实现 ,还有异步监听具体实现细节可以查看
https://blog.youkuaiyun.com/justry_deng/article/details/103235580