250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- FetchType
- 지연로딩
- querydsl
- 다대다
- shared lock
- 데코레이터
- 즉시로딩
- 연결리스트
- 스토어드 프로시저
- 일대다
- 스프링 폼
- 힙
- BOJ
- 연관관계
- 백트래킹
- JPQL
- 유니크제약조건
- CHECK OPTION
- 다대일
- fetch
- exclusive lock
- dfs
- 비관적락
- eager
- 이진탐색
- execute
- PS
- 동적sql
- 낙관적락
- SQL프로그래밍
Archives
- Today
- Total
흰 스타렉스에서 내가 내리지
Spring Interceptor , 스프링 인터셉터 본문
728x90
Spring Interceptor란?
서버에 들어온 request 객체를 Controller의 Handler로 도달하기 전에, 개발자가 원하는 추가적인 작업을 한 후 Handler로 보낼 수 있도록 해준다.
왜 사용하는가?
예를들어, 관리자 계정만이 접근할 수 있는 핸들러에는 접근하는 사용자가 관리자인지 일반 유저인지 확인하는 코드를 작성해주어야 한다.
핸들러의 수가 수백개, 수천개가 된다면 같은 코드를 그 만큼 작성해주어야 한다.
Interceptor를 사용하면, 개발자는 Handler 수 만큼 작성했던 코드를 인터셉터 클래스에 한번만 작성하면 된다.
이로 인해 코드의 양이 현저히 줄어 메모리 낭비와 코드의 누락가능성을 줄일 수 있다.
어떻게 사용하는가?
1. 스프링에서 제공하는 org.springframework.web.servlet.HandlerInterceptor 인터페이스를 구현한다.
2. org.springframework.web.servlet.handler.HandlerInterceptorAdapter 추상 클래스를 override 한다.
Override 할 메서드는 무엇이 있는가?
1. boolean preHandle()
- 컨트롤러가 호출되기 전에 실행됨
- 컨트롤러가 실행 이전에 처리해야 할 직업이 있는 경우 혹은 요청정보를 가공하거나 추가하는 경우 사용
- return true : preHandle() 실행 후 핸들러에 접근한다.
- return false : 작업을 중단하여 컨트롤러와 남은 인터셉터가 실행되지 않는다.
2. postHandle()
- 핸들러가 실행은 완료 되었지만 아직 View가 생성되기 이전에 호출된다.
3. afterCompletion()
- 모든 View에서 최종 결과를 생성하는 일을 포함한 모든 작업이 완료된 후에 실행된다.
- 요청 처리 중에 사용한 리소스를 반환해 주기 적당한 메서드이다.
'Spring' 카테고리의 다른 글
스프링에서 Bean을 주입받는 방식 (0) | 2023.01.17 |
---|---|
Filter, Interceptor, AOP의 차이 (0) | 2023.01.16 |
Spring WebFlux (0) | 2023.01.01 |
spring security와 jwt를 이용한 로그인 (0) | 2022.10.04 |
FilterChain 정보 (0) | 2022.10.03 |