设计模式之观察者模式

发布时间 2023-04-19 21:57:27作者: 一蓑烟雨任平生。。

设计模式之观察者模式

@Component
public class MyApplicationListener  implements ApplicationListener<ApplicationStartedEvent > {
    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        System.out.println("ApplicationStartedEvent  = " + event);
    }
}

这是一个springboot中观察者模式的一个demo,当一个类被注入到ioc容器中,并且实现了应用程序侦听器(ApplicationListener)接口,而接口的泛型是某一个事件应用程序启动事件(ApplicationStartedEvent),重写onApplicationEvent()方法.

通过上面的描述信息,我们不难看出 当应用程序启动时ApplicationListener应用程序侦听器就会感知到,就会执行onApplicationEvent()方法

当我们自己自定义事件时这样操作

创建一个事件继承ApplicationEvent抽象类

public class MyEvent extends ApplicationEvent {
    public MyEvent(Object source) {
        super(source);
    }
}

使用我们的事件类

@Component
public class MyEventApplicationListener implements ApplicationListener<MyEvent> {
    @Override
    public void onApplicationEvent(MyEvent event) {
        System.out.println("MyEvent  = " + event);
    }
}

当我们的类被实例,就会触发事件

controller

@RestController
public class PublishController {
    //注入就可用
    @Autowired
    private ApplicationEventPublisher applicationEventPublisher;
    @GetMapping("/test")
    public String hello() {
        MyEvent myEvent = new MyEvent("我是黑米");
        applicationEventPublisher.publishEvent(myEvent);
        return "已经发布";
    }
}

执行效果

image-20230419215103582