@Component
@Slf4j
public class MyListener implements ApplicationRunner, ApplicationListener<MyEvent> {
public static Map<String,String> map = new HashMap<>();
@Override
public void run(ApplicationArguments args) {
map.put("1", "aa");
map.put("2", "bb");
map.put("3", "cc");
}
@Override
public void onApplicationEvent(MyEvent event) {
System.out.println("监听到map:"+map);
}
}
public class MyEvent extends ApplicationEvent {
public MyEvent(Object source) {
super(source);
}
}
@RestController
public class MyController {
private final ApplicationEventPublisher eventPublisher;
public MyController(ApplicationEventPublisher eventPublisher) {
this.eventPublisher = eventPublisher;
}
@GetMapping("/publish-event/{key}/{value}")
public void publishEvent(@PathVariable String key, @PathVariable String value) {
MyListener.map.put(key, value);
MyEvent event = new MyEvent(this);
eventPublisher.publishEvent(event);
}
}