SpringFramework/BASIC

[Filter, Interceptor, AOP] 공통코드 처리

유혁스쿨 2020. 9. 10. 00:20
728x90
반응형

Filter, Interceptor, AOP

 

회원게시판 게시글쓰기, 게시글 수정하기, 삭제하기 등등 어떠한 작업에대한 권한및 정보 검증들을 session으로 처리한다고 할때 session검증이 필요한 상당히 많은부분에 동일한 코드들이 들어가야 합니다. 

 

회원이 맞는지에 대한 권한을 로그인 유무를 기준으로 잡아 계속 세션을 확인하고, session에 id가없다면 계속 redirect로 로그인페이지로 돌려보내고

 

이러한 동일한 처리를 위해 사용하는것 중 하나가 Interceptor 입니다.

 

공통 코드들을 한번에 처리해주는 작업을 크게 3개지로 나눌수 있습니다.

Filter, Interceptor, AOP

이 세가지 모두 공통소스에 대한 작업을 한번에 처리하기 위한 용도로 사용되는것 이며 각각 범위가 다릅니다.

 

 

[Filter]

Filter라는것은 모든 요청에 진입할때 걸러주는역할을 해줍니다.

Dispatcher서블릿에 들어가기 전에 사용하는것이 필터입니다.

 

예를들어 web.xml에 설정해놓은 EncodingFilter가 Filter의 예가 될수 있습니다.

<!-- 한글 인코딩 필터 설정 (톰캣 내부의 한글처리) -->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

톰캣 서버내부의 인코딩을 UTF-8로 바꿨던 필터입니다.

이것은 모든요청에대해서 한글을 적용해야하기 때문에 진입하자마자 걸러서 한글로바꿔주는 역할을 했습니다.

따라서 Fiter는 모든 요청이 들어올때 걸러주는 역할을 해줍니다.

 

[ Interceptor ]

Interceptor는 Filter보다 더 세밀하게 특정 요청에 대해서 걸러줄때 사용합니다.

예를들어 로그인한 사람들에 대해서 게시판에 이런 저런 그런 요런 기능들을 어떻게 제한하겠다.

그러면 BoardController를 제한해야 되는것입니다.

BoardInterceptor, LoginInterceptor, AutoLoginInterceptor 등 특정 기능에 대한 요청 들이 들어왔을때 걸러내주는 역할을 해줍니다.

 

[ AOP ]

AOP는 Interceptor보다 더 세밀한 부분입니다. 컨트롤러 다음에 진입합니다.

Service의 특정 메서드에 대해서 공통적으로 제한을 할것인가

Repository의 어떤 메서드에 대해서 공통으로 처리할것인가.

보통은 로그처리, 공통적으로 Sysyem.out으로 로그를찍는 작업을 할때 그것을 일괄 처리해줄때 사용합니다.

 

 

728x90
반응형