springでパブリッシュ/サブスクライブパターンを実現する方法
在Spring中,可以使用Spring的事件机制来实现发布订阅模式。
- イベントオブジェクトの作成: 最初に、発行するデータを含むイベントオブジェクトを作成する必要があります。
public class CustomEvent extends ApplicationEvent {
private String message;
public CustomEvent(Object source, String message) {
super(source);
this.message = message;
}
public String getMessage() {
return message;
}
}
- イベントパブリッシャーを作成する: イベント発行を担うイベントパブリッシャーのクラスを定義する。
@Component
public class CustomEventPublisher {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
public void publishEvent(String message) {
CustomEvent customEvent = new CustomEvent(this, message);
applicationEventPublisher.publishEvent(customEvent);
}
}
- イベントリスナーの作成:イベントを待ち受け処理を行うイベントリスナーのクラスを作成する。
@Component
public class CustomEventListener implements ApplicationListener<CustomEvent> {
@Override
public void onApplicationEvent(CustomEvent event) {
String message = event.getMessage();
// 处理事件逻辑
}
}
- イベントの発火:イベントを発火したい場所で、イベントパブリッシャーでイベントを発火する。
@Autowired
private CustomEventPublisher customEventPublisher;
public void doSomething() {
customEventPublisher.publishEvent("Some message");
}
これにより、doSomething()メソッドが呼び出されると、カスタムイベントの発行がトリガーされ、イベントリスナーはそのイベントを受け取って適切な処理を実行します。