第一步、定义一个事件
public class TestEvent extends ApplicationEvent { /** * Create a new ApplicationEvent. * * @param source the object on which the event initially occurred (never {@code null}) */ public TestEvent(String source) { super(source); System.out.println(source); } }第二步、监听这个事件(我这边写两个监听器)
@Component public class TestEventListener implements ApplicationListener<TestEvent> { @Override public void onApplicationEvent(TestEvent event) { System.out.println("TestEventListener 监听到事件"); } } @Component public class TestEventListener2 implements ApplicationListener<TestEvent> { @Override public void onApplicationEvent(TestEvent event) { System.out.println("TestEventListener2 监听到事件"); } }第三部、发布事件看这个两个监听器能不能收到。
@Resource ApplicationEventPublisher publisher; @RequestMapping(value = "/test/event", method = RequestMethod.GET) @ResponseBody public Map<String, Object> event(HttpServletResponse response, HttpServletRequest request) { Map<String, Object> retmap = Maps.newHashMap(); try { publisher.publishEvent(new TestEvent("发布一个事件")); } catch (Exception e) { response.setStatus(500); logger.error("测试出错 error =", e); } return retmap; }打印结果:
发布一个事件 TestEventListener 监听到事件 TestEventListener2 监听到事件