spring boot 实现发布订阅
时间: 2023-07-31 15:12:13 浏览: 70
在 Spring Boot 中实现发布订阅模式,可以使用 Spring 的事件机制来实现。下面是一个简单的示例:
1. 创建一个事件类,例如 `MyEvent`:
```java
public class MyEvent {
private String message;
public MyEvent(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
```
2. 创建一个事件发布者,例如 `EventPublisher`:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
@Component
public class EventPublisher {
@Autowired
private ApplicationContext applicationContext;
public void publishEvent(String message) {
MyEvent event = new MyEvent(message);
applicationContext.publishEvent(event);
}
}
```
3. 创建一个事件监听器,例如 `EventListener`:
```java
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
@Component
public class EventListener {
@EventListener
public void handleEvent(MyEvent event) {
String message = event.getMessage();
// 处理事件
System.out.println("收到事件:" + message);
}
}
```
4. 在需要发布事件的地方注入 `EventPublisher`,并调用 `publishEvent` 方法来发布事件:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApp {
@Autowired
private EventPublisher eventPublisher;
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
public void someMethod() {
// 发布事件
eventPublisher.publishEvent("Hello, world!");
}
}
```
当调用 `someMethod` 方法时,会触发 `MyEvent` 事件的发布,然后 `EventListener` 中的 `handleEvent` 方法会被自动调用,从而实现了发布订阅模式。
这是一个简单的示例,你可以根据具体需求进行扩展和定制。