本文共 1561 字,大约阅读时间需要 5 分钟。
通过之前的学习,我们了解到ApplicationListener接口在spring事件广播中能够将消息广播到需要的监听器中。那么就让我们手撸一个监听器来试试。看看效果。
@Datapublic class MyApplicationEvent extends ApplicationEvent { private String age; private String name; /** * Create a new ApplicationEvent. * * @param source the object on which the event initially occurred (never {@code null}) */ public MyApplicationEvent(Object source,String age,String name) { super(source); this.age=age; this.name=name; }}
@Componentpublic class MyApplicationListener implements ApplicationListener { /*** * 监听事件 * @param event */ @Override public void onApplicationEvent(ApplicationEvent event) { System.out.println("myApplication...."); if (event instanceof MyApplicationEvent){ System.out.println("myapplicationEvent..."); System.out.println(event.toString()); } }}
@RestController@RequestMapping("/file")public class FileController implements ApplicationContextAware { private static ApplicationContext context; @GetMapping(value = "/test") public void test(){ MyApplicationEvent myApplicationEvent=new MyApplicationEvent("test","123","tjl"); context.publishEvent(myApplicationEvent); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.context=applicationContext; }}
注释:上述打印的结果中,最后两个输出是容器事件。
总结:在做广播的时候要首先明确广播事件,定义好广播事件之后再定义广播监听器。然后在广播监听器中对广播事件进行处理。在发送广播的时候用IOC容器的pushEvent方法。在注入content的时候,可以通过ApplicationContentAware接口来实现。
转载地址:http://dhkmi.baihongyu.com/