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

观察者模式在Java单体服务中的运用

观察者模式主要用于当一个对象发生改变时,其关联的所有对象都会收到通知,属于事件驱动类型的设计模式,可以对事件进行监听和响应。下面简单介绍下它的使用:

1 定义事件

import org.springframework.context.ApplicationEvent;

public class OrderCreatedEvent extends ApplicationEvent {
    private final Long orderId;

    public OrderCreatedEvent(Object source, Long orderId) {
        super(source);
        this.orderId = orderId;
    }

    public Long getOrderId() {
        return orderId;
    }
}

2 事件发布者

import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;

@Service
public class OrderService {
    private final ApplicationEventPublisher eventPublisher;

    public OrderService(ApplicationEventPublisher eventPublisher) {
        this.eventPublisher = eventPublisher;
    }

    public void createOrder(Long orderId) {
        // 创建订单逻辑
        System.out.println("订单创建成功: " + orderId);

        // 发布事件
        eventPublisher.publishEvent(new OrderCreatedEvent(this, orderId));
    }
}

3 事件监听者

import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

@Component
public class NotificationService {

    @EventListener
    public void handleOrderCreated(OrderCreatedEvent event) {
        System.out.println("发送通知:订单 " + event.getOrderId() + " 创建成功!");
    }
}

注意事项:观察者模式只能在同一个微服务中使用,跨服务中将失效。

相关文章:

  • 质检LIMS实验室系统在塑料制品的应用 LIMS系统重塑塑料制品质检
  • leetcode hot100 多维动态规划
  • hadoop集群的常用命令
  • 《Spring Boot全栈开发指南:从入门到生产实践》
  • JAVA反序列化深入学习(十一):Spring1
  • 【Pandas】pandas Series to_latex
  • 力扣hot100_贪心算法
  • 实现基于Vue的后台管理系统权限控制与动态路由
  • 【避坑指南】RAGFlow + Ollama + Deepseek 构建本地知识库
  • 逻辑损失以及梯度下降的实现
  • Docker学习--容器操作相关命令--docker logs 命令
  • 利用 SSRF 和 Redis 未授权访问进行内网渗透
  • Java 中数组转集合的方法
  • 分布式环境下的主从数据同步
  • SpringBoot事务管理(四)
  • Faster-Whisper —— 为语音识别加速的利器
  • 283. 移动零
  • 【QT】Qt4 QtWebKit使用教程
  • 数据结构与算法-双指针法
  • Java 大视界 -- 基于 Java 的大数据可视化在城市规划决策支持中的交互设计与应用案例(164)
  • 设计公司官方网站/上海疫情最新数据
  • 做慕课的网站/搜索引擎优化的主要工作
  • 北京市办理居住卡在哪个网站做/西安网站维护
  • wordpress 主题 tewnty ten 导航条字体 修改/银川seo优化
  • 从事网站开发办理什么个体/网络推广费用一般多少
  • 厦门中小企业建网站补助/友情链接英文