java - 从 Jersey 迁移到 spring-mvc/rest : ContainerRequestFilter, ContainerResponseFilter

标签 java spring rest spring-mvc jersey

由于业务需求,我需要从 jersey 迁移到 spring-mvc/rest ...

我正在 spring-mvc 中搜索与 jersey 的 ContainerRequestFilterContainerResponseFilter 等价的东西。

有什么想法吗?

最佳答案

我认为您正在寻找的是 HandlerInterceptor .你不会在双类请求/响应风格中找到它,但是两个过滤器方法都包含在同一个类中,以 preHandlepostHandle 的形式,分别相当于request-filter和response-filter。拦截器包装处理程序调用。这是一个例子:

拦截器:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class LogginHandlerInterceptor implements HandlerInterceptor{
    @Override
    public boolean preHandle(HttpServletRequest hsr, 
                             HttpServletResponse hsr1, Object handler) throws Exception {
        System.out.println("preHandle - " + handler);
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest hsr, HttpServletResponse hsr1, 
                           Object handler, ModelAndView mav) throws Exception {
        System.out.println("postHandle - " + handler);
    }

    @Override
    public void afterCompletion(HttpServletRequest hsr, HttpServletResponse hsr1, 
                                Object handler, Exception excptn) throws Exception {
        System.out.println("afterCompletion - " + handler);
    }
}

配置:

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"..."})
public class WebAppConfiguration extends WebMvcConfigurerAdapter {
    ...
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LogginHandlerInterceptor());
    }
    ...
}

另见:

关于java - 从 Jersey 迁移到 spring-mvc/rest : ContainerRequestFilter, ContainerResponseFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28640331/

相关文章:

java - 使用 notnoop 的 java-apns 库时导致此错误的原因是什么?

java - JPA 中的日期时间表达式作为参数传递

c# - 在 C# 中使用 MakeGenericMethod 后如何制作具体类型?

java - Jersey servlet 的 web.xml 不工作

java - Spring Framework 中基于 Beans Java 的配置不起作用

java - 更新响应对象而不转换为java对象

Java double.MAX_VALUE?

java - 如何让 jackson 使用一种方法将类序列化为 JSON?

java - 为什么返回空白?

java - Spring OAuth2 : InsufficientAuthenticationException