实现步骤
-
自定义需要发布的事件类,需要继承 ApplicationEvent
-
使用 @EventListener 来监听事件或者实现 ApplicationListener 接口。
-
使用 ApplicationEventPublisher 来发布自定义事件(@Autowired注入即可)
代码
// 事件的载体,可以定义自定义变量或者直接用 source
@Component
public class MyEvent extends ApplicationEvent {
public MyEvent(ApplicationContext source) {
super(source);
}
}
// 观察者
@Component
public class MyListenerA implements ApplicationListener<MyEvent> {
@Override
public void onApplicationEvent(MyEvent myEvent) {
System.out.println("MyListenerA");
}
}
// 消息发送者
@Component
public class MyPublisher {
@Autowired
private ApplicationEventPublisher publisher;
public void publisherEvent(MyEvent myEvent) {
publisher.publishEvent(myEvent);
}
public void publisherEvent(Object event) {
publisher.publishEvent(event);
}
}