首页 > 其他分享 >Spring Boot Event 观察者模式,轻松实现业务解耦!

Spring Boot Event 观察者模式,轻松实现业务解耦!

时间:2023-03-14 17:56:47浏览次数:40  
标签:Spring Boot 观察者 业务 Bean 注解 Event

业务场景:

实际业务开发过程中,业务逻辑可能非常复杂,核心业务 + N个子业务。如果都放到一块儿去做,代码可能会很长,耦合度不断攀升,维护起来也麻烦,甚至头疼。还有一些业务场景不需要在一次请求中同步完成,比如邮件发送、短信发送等。

MQ 确实可以解决这个问题,但 MQ 重啊,非必要不提升架构复杂度。针对这些问题,我们了解一下 Spring Event。

本质:

Spring Event(Application Event)其实就是一个观察者设计模式,一个 Bean 处理完成任务后希望通知其它 Bean 或者说一个 Bean 想观察监听另一个Bean 的行为。

干货:

1.自定义事件

定义事件,继承 ApplicationEvent 的类成为一个事件类

2.定义监听器

监听并处理事件,实现 ApplicationListener 接口或者使用 @EventListener 注解

3.定义发布者

发布事件,通过 ApplicationEventPublisher 发布事件

 

4.单测执行

5.开启异步

启动类增加 @EnableAsync 注解

Listener 类需要开启异步的方法增加 @Async 注解

 

来源:blog.csdn.net/csp732171109/article/details/124377254

标签:Spring,Boot,观察者,业务,Bean,注解,Event
From: https://www.cnblogs.com/Baker-Street/p/17215766.html

相关文章

  • 【spring boot】 后端对前端传入的字符长度做限制
    背景rest接口中,比如对某个字符串长度做限制,不要超过32个字符实现rest接口传入body对应的实体类使用controllerAdvice注解进行拦截异常(类似AOP思想)返回的......
  • Spring的事务传播机制
    Spring的事务传播机制概述Spring的事务传播机制有7种,在枚举Propagation中有定义。publicenumPropagation{REQUIRED(0),SUPPORTS(1),MANDATORY(2),......
  • SpringBoot WEB项目文件夹上传下载解决方案
    ​PHP用超级全局变量数组$_FILES来记录文件上传相关信息的。1.file_uploads=on/off 是否允许通过http方式上传文件2.max_execution_time=30 允许脚本最大执行时间......
  • Spring笔记_动态代理
    AOPTarget目标对象Proxy代理目标对象中的方法产生结果代理类joinpoint连接点被拦截的方法(可以被增强的方法)Pointcut切入点jointPoint中已经增强的为切入点......
  • SpringMVC WEB项目文件夹上传下载解决方案
    ​  一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载......
  • Spring中的单例和多例的区别
    Spring中的单例和多例的区别https://blog.csdn.net/qq_41369135/article/details/1241034271,什么是单例和多例单例:所有请求用同一个对象来处理。通过单例模式,可以保证......
  • 【教程】SpringCloud+Nacos+Feign+Gateway搭建教程(推荐)
    【教程】SpringCloud+Nacos+Feign+Gateway搭建教程(推荐)【教程】SpringCloud+Nacos+Feign+Gateway(一)NacosServer注册中心服务端项目(推荐)参考代码:https://gitee.com......
  • Spring 核心概念
    微信公众号:运维开发故事作者:老郑在前一篇我们了解了SpringIOC,SpringAOP的强大,以及对我们编程范式,编程基础的影响。接下来我们一起来聊一下Spring基础概念。对于基础......
  • 手撕Spring6教程(六)第一个Spring程序的深度剖析
    第一个Spring程序详细剖析本篇文章说说Spring的第一个程序详细的剖析,上篇说了spring第一个程序的前期准备工作​​https://blog.51cto.com/u_15485663/6110947​​配合视频......
  • springboot 中使用@Value 获取配置文件中参数问题
    springboot中使用@Value("${spring.redis.password}")获取配置文件中参数时,如果配置文件中没有相关参数,项目启动时会报错Causedby:java.lang.IllegalArgumentExcep......