Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 截获请求开始和结束于带弹簧靴的Vaadin 14(流)_Spring Boot_Vaadin_Vaadin Flow - Fatal编程技术网

Spring boot 截获请求开始和结束于带弹簧靴的Vaadin 14(流)

Spring boot 截获请求开始和结束于带弹簧靴的Vaadin 14(流),spring-boot,vaadin,vaadin-flow,Spring Boot,Vaadin,Vaadin Flow,我正在使用vaadinspringbootstarter集成vaadinframework14和springboot 我希望重写SpringServlet类的requestStart和requestEnd方法,以执行以下操作: 将诸如当前路由/视图路径和当前用户ID之类的内容放入SLF4J MDC,以便将其包含在每个日志语句中 记录请求的持续时间 在vaadin8中有一个SpringVaadinServlet类,我可以通过简单地用@SpringComponent(“vaadinServlet

我正在使用
vaadinspringbootstarter
集成vaadinframework14和springboot

我希望重写
SpringServlet
类的
requestStart
requestEnd
方法,以执行以下操作:

  • 将诸如当前路由/视图路径和当前用户ID之类的内容放入SLF4J MDC,以便将其包含在每个日志语句中
  • 记录请求的持续时间
在vaadin8中有一个
SpringVaadinServlet
类,我可以通过简单地用
@SpringComponent(“vaadinServlet”)
注释我的自定义子类来替换它

这种方法不再有效。
vaadin-spring
集成包含
SpringBootConfiguration
,其中包含对
SpringServlet
构造函数的直接调用:

@Bean
公共ServletRegistrationBean ServletRegistrationBean(){
字符串映射=configurationProperties.getUrlMapping();
Map initParameters=new HashMap();
boolean rootMapping=RootMappedCondition.isRootMapping(映射);
if(根映射){
mapping=VaadinServletConfiguration.VAADIN_SERVLET_mapping;
initParameters.put(Constants.SERVLET\u PARAMETER\u PUSH\u URL,
VAADINMVCWebapilizer初始化器
.makeContextRelative(mapping.replace(“*”,”);
}
ServletRegistrationBean注册=新建ServletRegistrationBean(

新的SpringServlet(上下文、根映射)、映射);//您可以添加一个,通过它可以添加自定义请求处理程序。或者,您可以使用一个。

添加请求处理程序在这种情况下是没有用的,因为1)我需要确保我的处理程序在常规请求处理开始之前首先出现,2)我也需要挂接到请求的末尾,所以在所有处理程序都完成之后执行。
过滤器
可能会工作,但我不确定是否可以访问当前UI(或UI范围的bean)我需要得到一些我需要记录的信息。另外,我不想处理静态资源等的请求,只想处理真正的Vaadin UI请求。仍然可以扩展VaadinServlet并覆盖服务方法。如果你不知道该做什么,这是让事情变糟的秘诀。但是,是的,这就是路径。我仍然倾向于教育署认为,在正常的应用程序中,不应该有合法的理由这样做。