본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Spring framework/Spring boot

Spring boot 인터셉터, Spring boot Interceptor, 스프링부트 인터셉터

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 12. 2.

 

스프링부트에서 인터셉터 등록은 매우 간단하다.

먼저 인터셉터 역할을 할 클래스를 생성한다.

통상적으로 세션에서 로그인 정보가 등록되어 있는지 확인하기 때문에 세션을 가져오는 코드도 추가 하였다.

import java.util.HashMap;
import java.util.Optional;

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

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class MyInterceptor extends HandlerInterceptorAdapter{

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		final HttpSession session = Optional.ofNullable(request).map( HttpServletRequest :: getSession ).orElse(null);  //세션 가져오는 부분
		/*
		  내용...
		
		*/
		return true;
	}

}

 

다음으로 해당 인터셉터를 등록 할 설정용 클래스를 만든다.

만약 만들어져 있다면 기존 클래스를 활용해도 된다.

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.SessionCookieConfig;
import javax.servlet.SessionTrackingMode;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


@Configuration   //스프링부트 웹 설정
public class Configurations implements WebMvcConfigurer {

	@Override  //인터셉터 등록
	public void addInterceptors(InterceptorRegistry registry) {
        List<String> URL_PATTERNS = Arrays.asList("/배열로가능1", "/배열로가능2");
		registry.addInterceptor(new MyInterceptor())  //만들어준 인터셉터
			.addPathPatterns(URL_PATTERNS)   //이런식으로 배열로도 가능하고,
			.excludePathPatterns("/원하는패턴1")   //1개1개씩 추가도 가능하다.
			.excludePathPatterns("/원하는패턴2");
	}

}

 

Configuration 에노테이션을 사용하고 WebMvcConfigurer를 상속받으면 스프링부트가 동작을 하면 아래 등록된 내용들을 웹 설정에 등록하여준다.

해당 클래스만 만들어주면 스프링부트가 알아서 내용을 조립하여 주기 때문에 따로 설정을 추가 할 필요가 없다.

 

addPathPatterns메소드를 활용해서 배열형태로 인터셉트 할 패턴을 넣어줄 수 있으며, excludePathPatterns 메소드를 활용해서 1개씩 인터셉트할 패턴을 넣어 줄 수 있다.

마찬가지로 registry 변수로 선언 된 InterceptorRegistry 클래스에 여러개의 인터셉터용 클래스를 추가 할 수도 있다.

 

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글