设计模式之观察者模式
@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 "已经发布";
}
}
执行效果