package com.example.demo.event; import com.example.demo.model.UserEvent; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component; import org.springframework.beans.factory.annotation.Autowired; /** * 事件发布器 - 演示如何发布事件 * * 学习点: * - ApplicationEventPublisher 接口 * - 依赖注入发布器 * - 解耦:发布者不需要知道监听者 */ @Component public class UserEventPublisher { @Autowired private ApplicationEventPublisher eventPublisher; /** * 发布用户事件 */ public void publishEvent(UserEvent event) { System.out.println("[EventPublisher] 发布事件: " + event.getType() + " - " + event.getUserName()); eventPublisher.publishEvent(event); } /** * 便捷方法:发布用户创建事件 */ public void publishUserCreated(Long userId, String userName) { UserEvent event = new UserEvent( UserEvent.Type.CREATED, userId, userName, "新用户注册成功" ); publishEvent(event); } /** * 便捷方法:发布用户登录事件 */ public void publishUserLogin(Long userId, String userName) { UserEvent event = new UserEvent( UserEvent.Type.LOGIN, userId, userName, "用户登录成功" ); publishEvent(event); } }