Spring的事件发布-订阅机制是一种基于观察者模式实现的,它允许在应用程序的不同部分之间传递事件,并在事件发生时执行相应的操作
1. 定义事件
import org.springframework.context.ApplicationEvent;
public class UserRegisteredEvent extends ApplicationEvent {
private String userName;
public UserRegisteredEvent(Object source, String userName) {
super(source);
this.userName = userName;
}
public String getUserName() {
return userName;
}
}
2. 发布事件
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
public void registerUser(String userName) {
// 用户注册逻辑...
// 发布用户注册事件
UserRegisteredEvent event = new UserRegisteredEvent(this, userName);
applicationEventPublisher.publishEvent(event);
}
}
3. 监听事件
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
@Component
public class UserRegisteredListener {
@EventListener
public void handleUserRegisteredEvent(UserRegisteredEvent event) {
// 处理用户注册事件
System.out.println("User registered: " + event.getUserName());
// 在这里可以执行发送欢迎邮件、创建用户相关的资源等操作
}
}
4. 配置启动
最后,确保在Spring配置中包含了事件发布者和监听器,然后启动应用程序。如果使用Java配置,通常不需要额外配置,因为@Component
注解会让Spring自动检测并注册这些bean。
欢迎点赞、转发、评论。