当前位置: 首页 > news >正文

自适应网站制作费用涞水县住房和城乡建设局网站

自适应网站制作费用,涞水县住房和城乡建设局网站,做网站推广有用吗,网站建设多久可以学会目录 自定义事件 事件监听器 事件发布者(服务层) 使用示例controller层 Spring源码分析之事件机制——观察者模式(一)-CSDN博客 Spring源码分析之事件机制——观察者模式(二)-CSDN博客 这两篇文章是这…

目录

自定义事件

事件监听器

事件发布者(服务层)

使用示例controller层


Spring源码分析之事件机制——观察者模式(一)-CSDN博客

Spring源码分析之事件机制——观察者模式(二)-CSDN博客

这两篇文章是这个篇章的前篇,感兴趣的读者可以阅读一下,从spring源码分析观察者模式

接下来说明一下Spring事件机制使用案例,就一个模拟用户注册场景的场景吧,事件机制其实还可以运用到更加广泛的作用。

说实话,个人感觉Spring事件机制真的好用。

自定义事件

public class UserRegisteredEvent extends ApplicationEvent {private final String username;private final String email;private final LocalDateTime registeredTime;public UserRegisteredEvent(Object source, String username, String email) {super(source);this.username = username;this.email = email;this.registeredTime = LocalDateTime.now();}// getter方法public String getUsername() {return username;}public String getEmail() {return email;}public LocalDateTime getRegisteredTime() {return registeredTime;}
}

事件监听器

@Component
@Order(1)  // 定义监听器执行顺序
public class EmailNotificationListener implements ApplicationListener<UserRegisteredEvent> {private final EmailService emailService;@Autowiredpublic EmailNotificationListener(EmailService emailService) {this.emailService = emailService;}@Overridepublic void onApplicationEvent(UserRegisteredEvent event) {// 发送欢迎邮件emailService.sendWelcomeEmail(event.getEmail(), event.getUsername());log.info("Welcome email sent to user: {}", event.getUsername());}
}
@Component
@Order(2)
public class UserCacheListener implements ApplicationListener<UserRegisteredEvent> {private final CacheManager cacheManager;@Autowiredpublic UserCacheListener(CacheManager cacheManager) {this.cacheManager = cacheManager;}@Overridepublic void onApplicationEvent(UserRegisteredEvent event) {// 更新用户缓存cacheManager.putUserCache(event.getUsername());log.info("User cache updated for: {}", event.getUsername());}
}

事件发布者(服务层)

@Service
@Transactional
public class UserService {private final UserRepository userRepository;private final ApplicationEventPublisher eventPublisher;@Autowiredpublic UserService(UserRepository userRepository, ApplicationEventPublisher eventPublisher) {this.userRepository = userRepository;this.eventPublisher = eventPublisher;}public User registerUser(String username, String email, String password) {// 验证用户数据validateUserData(username, email, password);// 创建用户User user = new User(username, email, password);user = userRepository.save(user);// 发布用户注册事件eventPublisher.publishEvent(new UserRegisteredEvent(this, username, email));log.info("User registered and event published: {}", username);return user;}private void validateUserData(String username, String email, String password) {// 数据验证逻辑}
}

使用示例controller层

@RestController
@RequestMapping("/api/users")
public class UserController {private final UserService userService;@Autowiredpublic UserController(UserService userService) {this.userService = userService;}@PostMapping("/register")public ResponseEntity<UserDTO> registerUser(@RequestBody UserRegistrationRequest request) {User user = userService.registerUser(request.getUsername(),request.getEmail(),request.getPassword());return ResponseEntity.ok(UserDTO.fromUser(user));}
}

用户注册时,UserService发布UserRegisteredEvent事件,EmailNotificationListener同步处理邮件发送,UserCacheListener同步更新缓存,AsyncAnalyticsListener异步处理统计数据,通过@Order注解控制监听器执行顺序。

这种实现方式将用户注册的核心逻辑与后续的处理操作解耦,使得系统更容易维护和扩展。每个监听器都专注于自己的职责,可以独立地添加、移除或修改,而不会影响其他部分的代码。

http://www.yayakq.cn/news/952459/

相关文章:

  • 黄冈市建设局网站免费seo关键词优化排名
  • 做土司的网站西安网站制作哪家好
  • 网站制作公司官网南京关键词优化的发展趋势
  • 台州云建站模板电子商务网站开发设计报告
  • 哪些网站可以做edge主页sem优化和seo的区别
  • 站长工具同大全站wix英文网站建设
  • SUPERW上海网站建设工作室阿里巴巴网站建设公司
  • 做美工一般用到的素材网站发免费广告电话号码
  • 怎么上传网站到ftp防做网站视频
  • 免费个人网站申请模板网站没有源代码
  • 中国建网站报价石家庄做网站和宣传的
  • 电子商务网站建设的大纲关于大棚建设的网站
  • 铜川网站开发广州中智软件开发有限公司
  • 手机网站html模板做暖暖小视频网站
  • 学校网站的建设目标是什么意思天河建网站公司
  • 网站专做盗版小说 会犯法吗上海专业高端网站建设
  • 泊头市建设局网站公司有网站有什么好处
  • 横向网站源码wordpress 菜单没了
  • 无聊网站建设做企业的网站的如何推广
  • 关于茶叶的网站模板免费建立国外网站
  • 河北中石化建设网站国外比较好的建筑设计网站
  • 建筑方案的网站免费网站推广的方法
  • 建材 网站 案例工信部备案系统网站
  • 哪个网站可以做思维导图北京旧房翻新装修公司排名
  • 郑州网站建设网页设计企业邮箱注册需要什么材料
  • 淄博网站建设找卓迅html5响应时网站
  • wordpress百度云下载文件怎么优化标题和关键词排名
  • 网站重新制作多久google重新收录简述网站建设的具体步骤
  • 网站提示框代码wordpress 不同分类不同模板
  • 网站开启速度变慢了关键词排名优化工具