概念类比
事件发布者 (解耦其他业务逻辑,仅仅是发布)
ApplicationEventPublisherAware
事件监听者 (业务逻辑处理)
ApplicationListener
事件 (消息载体)
UserRegisterEvent
show code
事件发布者 (解耦其他业务逻辑,仅仅是发布)
public class UserRegister implements ApplicationEventPublisherAware {
private ApplicationEventPublisher applicationEventPublisher;
public boolean register(User user) {
//用户注册
System.out.println("[service]用户[" + user + "]注册成功!");
//消息发布
applicationEventPublisher.publishEvent(new UserRegisterEvent(this, user));
return true;
}
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
this.applicationEventPublisher = applicationEventPublisher;
}
}
事件监听者 (业务逻辑处理)
public class EventListener implements ApplicationListener<UserRegisterEvent> {
@Override
public void onApplicationEvent(UserRegisterEvent event) {
System.out.println("正在发送邮件至: " + event.getUser().getEmail());
System.out.println("正在发短信到: " + event.getUser().getPhoneNum());
}
}
事件 (消息载体)
public class UserRegisterEvent extends ApplicationEvent {
private static final long serialVersionUID = -5481658020206295565L;
private User user;
// souce是发布这个事件的对象,可输出查看内容
public UserRegisterEvent(Object source, User user) {
super(source);
this.user = user;
}
public User getUser() {
return user;
}
}