1.首先Application开启异步
@SpringBootApplication
@EnableAsync
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
2.定义事件体(消息)
@Setter
@Getter
@ToString
public class ContentEvent extends ApplicationEvent {
private String content;
/**
* Create a new ApplicationEvent.
* @param source the object on which the event initially occurred (never {@code null})
*/
public ContentEvent(Object source) {
super(source);
}
public ContentEvent(Object source, String content){
super(source);
this.content = content;
}
}
3.定义事件监听者(接收者)
@Component
@Slf4j
public class ContentListener{
@Async
@EventListener
public void handler(ContentEvent event){
log.info("收到消息"+event.getContent());
}
}
4.发布事件(发送消息)
@Controller
public class ContentController {
@Autowired
private ApplicationContext applicationContext;
@GetMapping("/event/{content}")
public void sendEvent(@PathVariable String content){
applicationContext.publishEvent(new ContentEvent(this,content));
}
}