springboothttp2

让你的spring boot应用 支持HTTP2

最近比较流行的http2协议,在spring boot中可以使用了,昨兄圆天看了spring boot 官方文档  发现目前只有undertow和tomcat 服务器才支持而目前spring boot 集成的Tomcat 8.5.x 支持http2稍微麻烦点,需要用到 tomcat-native。启动的时候要加上  -Djava.library.path=/usr/local/opt/tomcat-native/lib   不然会报错

这里伍局我就拿undertow举例,关键配置如下:

application.properties

pom.xml

然后羡橘塌写一个Controller,借助google浏览器的一个插件就可以检测你搭建的http2是否成功了

聊聊springboot2的httptrace

本文主要研究下springboot2的码竖httptrace

spring-boot-actuator-autoconfigure-2.0.1.RELEASE-sources.jar!/org/springframework/boot/actuate/autoconfigure/trace/http/HttpTraceAutoConfiguration.java

spring-boot-actuator-2.0.1.RELEASE-sources.jar!/org/springframework/boot/梁悉actuate/迟渣大trace/http/InMemoryHttpTraceRepository.java

spring-boot-actuator-2.0.1.RELEASE-sources.jar!/org/springframework/boot/actuate/trace/http/HttpExchangeTracer.java

spring-boot-actuator-2.0.1.RELEASE-sources.jar!/org/springframework/boot/actuate/web/trace/servlet/HttpTraceFilter.java

spring-boot-actuator-2.0.1.RELEASE-sources.jar!/org/springframework/boot/actuate/web/trace/reactive/HttpTraceWebFilter.java

spring-boot-actuator-autoconfigure-2.0.1.RELEASE-sources.jar!/org/springframework/boot/actuate/autoconfigure/trace/http/HttpTraceEndpointAutoConfiguration.java

spring-boot-actuator-2.0.1.RELEASE-sources.jar!/org/springframework/boot/actuate/trace/http/HttpTraceEndpoint.java

输出实例

httptrace默认是开的,对于servlet及reactive的方式,分别使用了不同的filter,前者是HttpTraceFilter继承了OncePerRequestFilter,后者是HttpTraceWebFilter继承了WebFilter。可以自定义替换掉InMemoryHttpTraceRepository,自己将请求日志异步传递到日志中心。

springboothttp2  第1张

SpringBoot实现http请求的异步长轮询【2】— AsyncHandlerInterceptor方式

客户端调用服务端接口,服务端这个接口比较耗时。为了优化服务端的性能。

服务端收到servlet请求后,释放掉servlet占用罩喊的线程资源。开启一个异步线程去处理耗时的操作。当耗时操作处理完成后,将结果返回给客户端。

注意:在此期间,客户端和服务端的http链接并不会断开,客户端依旧苦苦等待响应数据;

可以使用接口AsyncHandlerInterceptor实现来拦截涉及异步处答猛理的请求,而不是使用HandlerInterceptor。

HandlerInterceptorAdapter适配器,适配了AsyncHandlerInterceptor和HandlerInterceptor,推荐使用这个来实现。

上文说到,释放Servlet线程,交由指定的线程池去处理,那清闷桥么如何去定义指定的线程池?

注意:方法返回的是Callable。

执行效果如下图所示:

SpringMVC-使用AsyncHandlerInterceptor拦截异步处理请求

SpringBoot 三种拦截http请求方式Filter,interceptor和aop

SpringBoot 三种拦截http请求方式Filter,interceptor和aop。

这三种拦截方式的拦截顺序是:filter—Interceptor--ControllerAdvice--@Aspect --Controller;

这三种方式的区陪昌别:

1.过滤器Filter可以拿到原始的HTTP请求和响应的信息, 但是拿不到你真正处理请求方法的信芦此扒息,也就是方法的信息。

2.拦截扒型器Interceptor可以拿到原始的HTTP请求和响应的信息,也可以拿到你真正处理请求方法的信息,但是拿不到传进参数的那个值。

3.切片Aspect,既然Spring那么支持AOP,可以拿到原始的HTTP请求和响应的信息, 也可以拿到你真正处理请求方法的信息,也可以传进参数的那个值。

实现Filter接口

实现 HandlerInterceptor 接口,然后配置进Spring。

配置进spring

pom.xml 添加Aop支持

以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!

版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023-09-23 14:25
下一篇 2023-09-23 14:25

相关推荐

发表回复

登录后才能评论