일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 2ne1
- 4minute(포미닛)
- addpathpatterns
- 소원을 말해봐
- 아이유기타
- preHandle
- 아브라 카타브라
- addinterceptor
- 소녀시대
- 쏘리쏘리기타
- 노무현 대통령 사망
- 청담동클럽
- 군계무학
- Spring Boot
- 클럽난투극
- 유재석과 면상들
- 니가밉다
- 아이유라이브
- 노무현 대통령
- excludepathpatterns
- 2PM
- 소녀시대마린룩
- 살이 차오른다 가자
- 용둔막국수
- 설경구
- 새말IC
- 청담동클럽파티
- 아이유
- 이대나온여자
- 무한도전
Archives
- Today
- Total
달동네 :: 세상사는 이야기
Spring Boot Interceptor, 어디까지 가봤니? 특정 URL에만 스윽~ 적용하기! 본문
Intro: "Interceptor야, 넌 누구냐"
Spring Boot 개발 중, 모든 요청에 무작정 Interceptor를 던져놓고 보는 건 마치 감기에 걸렸다고 해서 전신 MRI 찍는 격이죠. 가볍게 인증 체크만 필요한 URL도 있고, 굳이 건들지 않아야 할 공용 리소스도 있잖아요?
그래서 오늘은! Interceptor를 딱 원하는 URL에만 스마트하게 적용하는 방법을 재미있게 알려드릴게요. 읽고 나면 “아~ 이 맛에 Spring Boot 하지~” 소리 나올지도 몰라요.
Step 1. Interceptor 클래스 만들기
Interceptor는 HandlerInterceptor를 구현한 클래스죠. 여기선 간단히 요청이 들어올 때 로그를 찍는 인터셉터를 만들어볼게요.
public class MyCustomInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
System.out.println("🎯 인터셉터 발동! URL: " + request.getRequestURI());
return true;
}
}
이 친구는 요청이 들어올 때마다 "어디 가세요?" 하고 체크하는 느낌이죠.
Step 2. WebMvcConfigurer에서 URL 설정하기
이제 진짜 중요한 부분! “Interceptor야, 넌 이 URL만 맡아!”라고 말해줘야죠.
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyCustomInterceptor())
.addPathPatterns("/api/secure/**") // 이 URL에는 적용하고
.excludePathPatterns("/api/public/**"); // 이건 제외!
}
}
addPathPatterns vs excludePathPatterns
- addPathPatterns는 적용할 URL 패턴 지정
- excludePathPatterns는 예외 패턴 지정
이 둘을 잘 써먹으면 진짜 깔끔하게 원하는 구간만 타게 만들 수 있어요.
예를 들면:
- /api/secure/**: 인증이 필요한 API
- /api/public/**: 누구나 접근 가능한 오픈 API
💡 Tip: 여러 개의 Interceptor를 순서 있게 등록하려면?
Interceptor도 순서가 중요하죠. 먼저 실행될 친구를 위에, 나중에 실행될 친구는 아래에 두면 됩니다.
registry.addInterceptor(new FirstInterceptor()).order(1);
registry.addInterceptor(new SecondInterceptor()).order(2);
마무리 한 조각
Interceptor를 잘 쓰면, AOP 없이도 상당히 많은 요청 전후 로직을 처리할 수 있어요.
하지만! 무분별하게 모든 요청에 적용하는 건 과유불급.
"Interceptor도 사람이다. 일이 너무 많으면 지친다."
실전 예시 요약
URL 패턴적용 여부
/api/secure/login | ✅ 적용됨 |
/api/public/status | ❌ 제외됨 |
/css/style.css | ❌ 제외 (리소스는 보통 설정하지 않음) |
🗨️ 마무리 한마디
Spring Boot Interceptor, 알고 보면 정말 유용하죠?
“Spring을 안다고 해도 Interceptor를 안 쓰면 반만 안 거다”는 말도 있…진 않지만, 그 정도로 쓸 곳이 많다!
반응형