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,以便将其包含在每个日志语句中
- 记录请求的持续时间
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并覆盖服务方法。如果你不知道该做什么,这是让事情变糟的秘诀。但是,是的,这就是路径。我仍然倾向于教育署认为,在正常的应用程序中,不应该有合法的理由这样做。