Spring Boot ApplicationListener(监听器)的使用

需求

当下了一个订单后,通知用户下单成功

创建 Spring Boot 项目,依赖如下,其余省略
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
复制代码
创建事件 ApplicationEvent
@Getter
public class PushOrderEvent extends ApplicationEvent {

    private String orderNo;

    private Long userId;

    public PushOrderEvent(Object source, String orderNo,Long userId) {
        super(source);
        this.orderNo = orderNo;
        this.userId = userId;
    }
}
复制代码
创建监听器 ApplicationListener
实现接口方式
@Slf4j
@Component
public class PushOrderListener implements ApplicationListener<PushOrderEvent> {


    @Override
    public void onApplicationEvent(PushOrderEvent event) {

        log.info("{}用户下了一个订单{}", event.getUserId(), event.getOrderNo());
    }
}
复制代码
注解方式
@Slf4j
@Component
public class AnnotationPushOrderListener {

    @EventListener
    public void handler(PushOrderEvent event) {

        log.info("{}用户下了一个订单{}", event.getUserId(), event.getOrderNo());
    }

}
复制代码
发布事件
@Slf4j
@RestController
@RequestMapping("order")
public class OrderController {

    @Autowired
    private ApplicationEventPublisher publisher;

    @PostMapping("push")
    public ResponseEntity pushOrder() {
        String orderNo = UUID.randomUUID().toString();

        // 发布事件
        publisher.publishEvent(new PushOrderEvent(this, orderNo, 666666L));

        return ResponseEntity.ok(orderNo);
    }

}
复制代码
测试

请求接口

http://127.0.0.1:8080/order/push
复制代码

结果,控制台输出

666666用户下了一个订单211f238e-7517-4786-83ca-057c64545c65
复制代码
源码

点击这里

转载于:https://juejin.im/post/5c8521f26fb9a04a0956dc5e

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot监听器是用于监听应用程序中特定事件的组件,当这些事件发生时,监听器会执行相应的逻辑。 下面是一个简单的使用Spring Boot监听器的示例: 1. 创建一个自定义的监听器类,实现SpringApplicationListener接口。例如: ```java public class MyApplicationListener implements ApplicationListener<ApplicationReadyEvent> { @Override public void onApplicationEvent(ApplicationReadyEvent event) { // 处理应用程序启动完成事件 System.out.println("应用程序已启动!"); } } ``` 2. 在Spring Boot应用程序的入口类中,通过注解@EnableAutoConfiguration或@SpringBootApplication启用自动配置,并通过@ComponentScan扫描自定义监听器类。例如: ```java @EnableAutoConfiguration @ComponentScan public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 3. 运行应用程序时,自定义监听器的onApplicationEvent方法将会在应用程序启动完成时被调用。例如,当应用程序启动完成时,控制台将会打印出"应用程序已启动!"。 此外,Spring Boot还提供了其他类型的监听器,用于监听不同类型的事件,如应用程序启动前事件、应用程序关闭事件等。你可以根据需要实现不同的监听器,并注册到Spring Boot应用程序中。 总结:Spring Boot监听器用于监听特定事件,并在事件发生时执行相应的逻辑。通过自定义监听器类和在入口类中注册监听器,我们可以方便地使用监听器来处理应用程序中的各种事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值