Programming/Spring

Interceptor

Albothyl 2019. 3. 27. 20:51

1. create some interceptor class

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.WebContentInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Slf4j
public class SomeInterceptor extends WebContentInterceptor {

    @Autowired
    private SomeRequestProxy someRequestProxy;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        log.info("SomeInterceptor preHandle");
        someRequestProxy.setPre("SomeInterceptor setPre");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
        log.info("SomeInterceptor postHandle");
        someRequestProxy.setPost("SomeInterceptor setPost");
        log.info(someRequestProxy.toString());
    }
}

2. create some interceptor bean

@Bean
public SomeInterceptor someInterceptor() {
    return new SomeInterceptor();
}

 

3. regiest some interceptors

public class SomeConfiguration extend WebMvcConfigurerAdapter {
    ...

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(someInterceptor());
    }
}

Interceptor는 controller 이전 / 이후 단계에서 특정 데이터나 비지니스를 처리할 경우 사용한다.