首页 > 编程知识 正文

springboot接口框架(springboot接口安全)

时间:2023-05-03 23:06:38 阅读:145 作者:2557

在开发工作中,会有一个场景。做了一些事情之后,需要广播一些消息或者通知,告诉其他模块处理一些事件。一般来说可以一个一个的发送请求通知,但是有一种更好的方式,那就是事件监控,这也是设计模式中发布-订阅模式和观察者模式的一种实现。

观察者模式:简单来说,当你在做某件事的时候,周围有人在盯着你看。当挣扎的鸵鸟做了一件让旁边看你的人感兴趣的事情,他会按照这个事情做别的事情,但是盯着你的人一定要跟你登记,否则你不能通知他(或者他没有资格盯着你)。

对于Spring容器的一些事件,您可以监听并触发相应的方法。通常有两种方法,ApplicationListener接口和@EventListener注释。

要成功创建侦听器并使其工作,在此过程中需要几个角色:

1.事件可以封装和传递要在侦听器中处理的参数,如对象或字符串,并充当侦听器中的监视目标。

2.侦听器基于事件发生的业务处理模块。这里,它可以接收封装在处理事件中的对象或字符串。

3.事件发布者是事件的触发器。

一、ApplicationListener 接口

应用程序侦听器接口定义如下:

@ FunctionalInterface

公共接口ApplicationListenerE扩展了ApplicationEvent扩展了EventListener {

/**

*处理应用程序事件。

* @param事件要响应的事件

*/

在应用事件上无效;

}

它是一个泛型接口,泛型类型必须是ApplicationEvent及其子类。只要实现了这个接口,当容器有相应的事件触发器时,就可以触发onApplicationEvent方法。ApplicationEvent类有许多子类,Spring框架附带了以下子类。

00-1010可以简单地通过实现ApplicationListener接口并将添加到容器中来使用。

@组件

公共类MyApplicationListener实现了applicationlistener applicationevent {

@覆盖

public void on application event(application event application event){ 0

System.out.println('事件触发器:' applicationevent.getclass()。getname());

}

}

以下是Spring Boot项目的启动类:

@回弹应用

公共类SpringEventExampleApplication {

公共静态void main(String[]args){ 0

springapplication . run(springeventexample application . class,args);

}

}

您可以参考以下示例项目:

运行上述Spring Boot项目会在Spring中默认触发一些事件,可以看到Console控制台的输出:

s://p3.toutiaoimg.com/origin/pgc-image/54e734eb08794cc288941dca034be094?from=pc">

三、自定义事件和监听

下面实现自定义事件,并进行监听处理。示例项目的包结构如下所示,参考DDD领域模型的包结构。

(1)自定义事件

首先,我们需要定义一个时间(MyTestEvent),需要继承Spring的ApplicationEvent。

@Data

public class MyTestEvent extends ApplicationEvent {

private String message;

public MyTestEvent(Object source, String message) {

super(source);

this.message = message;

}

}

其中使用到了lombok提供的@Data注解。

(2)定义监听器

需要定义一下监听器,自己定义的监听器需要实现ApplicationListener接口,同时泛型参数要加上自己要监听的事件Class名,在重写的方法onApplicationEvent中,添加自己的业务处理逻辑:

@Component

public class MyEventListener implements ApplicationListener<MyTestEvent> {

@Override

public void onApplicationEvent(MyTestEvent myTestEvent) {

System.out.println("自定义事件监听:" + myTestEvent.getMessage());

}

}

(3)事件发布

有了事件,有了事件监听者,那么什么时候触发这个事件呢?每次想让监听器收到事件通知的时候,就可以调用一下事件发布的操作。首先在类里自动注入了ApplicationEventPublisher,这个也就是我们的ApplicationContext,它实现了这个接口。

@Component

public class MyTestEventPublisher {

@Autowired

private ApplicationEventPublisher applicationEventPublisher;

// 发布事件

public void publishEvent(String message) {

applicationEventPublisher.publishEvent(new MyTestEvent(this, message));

}

}

四、测试自定义事件和监听

创建一个RestController,可以从外部发起Request请求,触发自定义事件。

@RestController

public class TestEventController {

@Autowired

private MyTestEventPublisher publisher;

@GetMapping("/publish")

public void publishEvent() {

publisher.publishEvent("Hello world.");

}

}

启动示例项目,通过Postman发起Request请求:localhost:8080/publish

可以在控制台看到输出信息,如图所示,监听到MyTestEvent事件,打印输出事件内容。

(此处已添加圈子卡片,请到今日头条客户端查看)

下一篇文章,将介绍@EventListener注解。除了通过实现接口,还可以使用@EventListener 注解,实现任意的方法都能监听事件。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。