SpringBoot5 -- 事件Application Event

这个是看着资料自己整的小案例,项目里没有场景用到。

spring的事件流程

1.自定义事件,继承ApplicationEvent

2.自定义事件监听器,实现ApplicationListener

3.发布事件


自定义事件

public class DemoEvent extends ApplicationEvent {

    private String message;

    public DemoEvent(Object source,String message) {
        super(source);
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

自定义事件监听器

@Component
public class DemoListener implements ApplicationListener<DemoEvent> {
    @Override
    public void onApplicationEvent(DemoEvent demoEvent) {
        String message = demoEvent.getMessage();
        System.out.println("DemoListener 收到了消息:" + message);
    }
}

发布事件

@Component
public class DemoPublisher {
    @Autowired
    private ApplicationContext applicationContext;

    public void publish(String message) {
        applicationContext.publishEvent(new DemoEvent(this, message));
    }
}

测试:

@RestController
public class DemoController {

    @Autowired
    private DemoPublisher demoPublisher;

    @GetMapping(value = "index")
    public String index(@RequestParam("message") String message) {
        demoPublisher.publish(message);
        return "success";
    }

}

访问一次就会输出一个消息

DemoListener 收到了消息:hello1

DemoListener 收到了消息:张三


当使用容器发布DemoEvent,监听器就会把当前消息输出。类比下,当bean与bean之间通信时,一个bean处理完某些任务时,可以通知另一个bean做后续的处理。

猜你喜欢

转载自blog.csdn.net/qq_36781718/article/details/79993622
今日推荐