Spring中事件的用法

蓝星 2019年12月18日 293次浏览

Spring中的事件分为事件发布者(EventPublisher)、事件监听者(EventListener)。其使用方法相对来说比较简单。

在Spring 5.0之后,我们可以直接使用ApplicationEventPublisher来实现发布者

@Service
public class PublishService {
	@Autowired
	private ApplicationEventPublisher eventPublisher;

	public void postEventModel(EventModel eventModel) {
		eventPublisher.publishEvent(eventModel);
	}
}

可以直接使用@Autowired注入ApplicationEventPublisher,因为Spring在启动的时候已经创建了该类的实例并托管给bean容器。

而对于listener则更简单

@Service
public class PublishListener {

	@EventListener
	@Async
	public void onTaskStatusChange(EventModel eventModel){

	}
}

只需要保证EventModel相同就行 同时可以通过@Async注解标明是否异步进行处理。