springboot 自定义事件demo

mac2025-07-07  9

第一步、定义一个事件

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 监听到事件

最新回复(0)