실무에서 자주 사용되는 기능과 설정 방법을 한눈에!
@Component
public class LoggingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
System.out.println("Request URI: " + req.getRequestURI());
chain.doFilter(request, response);
}
}
public class AuthInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("Interceptor 실행: " + request.getRequestURI());
return true;
}
}
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new AuthInterceptor()).addPathPatterns("/api/**");
}
}
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("호출 전: " + joinPoint.getSignature().getName());
}
}
@Aspect
어노테이션 사용@Controller + @ResponseBody
의 축약형@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CheckAuth {
}
@Aspect
@Component
public class AuthAspect {
@Before("@annotation(CheckAuth)")
public void check() {
// 인증 처리
System.out.println("인증 검사 수행");
}
}
어노테이션 | 설명 |
---|---|
@Component |
모든 스프링 Bean의 기본 어노테이션 |
@Service |
비즈니스 로직을 담는 클래스에 사용 |
@Repository |
DAO 클래스에 사용 (예외 변환 포함) |
기능 | 동작 위치 | 주 사용 목적 |
---|---|---|
Filter | 서블릿 컨테이너 수준 | 보안, 인코딩, 로깅 |
Interceptor | DispatcherServlet 이후 | 인증, 권한, 요청 검사 |
AOP | 메서드 호출 전후 | 공통 로직 분리(로깅, 트랜잭션 등) |
RestController | REST API 처리 | JSON 응답 제공 |
Custom Annotation | 선언형 개발 | 코드 가독성 및 재사용성 향상 |
🔍 이 문서는 Spring/Spring Boot 개발에서 자주 사용되는 핵심 기능들을 중심으로 정리되었습니다. 실무/학습/기능 비교 시 참고하시기 바랍니다.