springboot中实现发布订阅中主要的组成部分有:事件、发布者、订阅者;对应需要使用到的类分别是 ApplicationEvent、ApplicationContext和ApplicationListener。
1 事件@Data
public class ListenEvent extends ApplicationEvent {
private String idNumber;
private String name;
private String message;
public ListenEvent(Object source) {
super(source);
}
}
2 发布者
@RestController
@RequestMapping("publishSubscribe/test")
public class Publisher {
@Autowired
private ApplicationContext applicationContext;
@RequestMapping("publish")
public void save() {
ListenEvent event = new ListenEvent(this);
event.setIdNumber("123123213");
event.setName("zhangsan");
event.setMessage("测试发布订阅功能");
applicationContext.publishEvent(event);
System.out.println("....................over........................");
}
}
订阅者
@Component public class SubscriberOne implements ApplicationListener{ @Async @Override public void onApplicationEvent(ListenEvent listenEvent) { System.out.println("订阅者1"+JSON.toJSON(listenEvent).toString()); } }
@Component public class SubscriberTwo implements ApplicationListener{ @Async @Override public void onApplicationEvent(ListenEvent listenEvent) { System.out.println("订阅者2"+JSON.toJSON(listenEvent).toString()); } }



