본문 바로가기
스프링

인터셉터, AOP 설명

by 그리득 2024. 1. 23.
728x90

인터셉터(Interceptor) - 필터와 비슷한 역할
공통의 서비스를 구현할 때 사용
controller의 매핑메소드가 실행하기 전,후,응답처리 후 기능을 구현

인터셉터 구현하기
Spring이 제공하는 HandlerInterCeptor인터페이스를 구현한 클래스를 선언
인터페이스에 정의된 필요한 추상메소드를 재정의
preHandle()
postHandle()
afterCompletion()
* bean으로 등록해야함.

적용대상 설정하기
- url패턴으로 설정
- xml의 <interceptors>태그 <interceptor url="".[옵션]> 자식태그를 선언

AOP (Aspect Orientied Programing) -> 관점지향프로그래밍
종단관심사와 횡단관심사를 나누는 것
-> 공통의 관심사(서브기능) 저장하는 aspect클래스를 생성
(ex 트랜잭션 처리)

인터셉터는 controller에만 적용 가능,AOP는 모든 클래스에 적용 가능

Aspect클래스 선언하기
- pointcut : 타겟이 되는 메소드를 지정 -> 패턴으로 지정
- advisor : 실행할 시점을 설정 -> 실행할 메소드에 선언
 Before,After,Around(전후),AfterReturning(반환한후),AfterThrowing(에러발생후)

AOP적용하기
1. xml방식
 - spring bean configuration.xml에 aop namespace를 추가
 - <aop:config>
<aop:aspect bean등록>
<aop:pointcut 표현식 아이디 설정>
<aop:before||after||around|afterreturning||afterthrowing>
실행할 메소드 지정, 적용할 pointcut등록
2. 어노테이션 방식
 - aspect클래스 선언부에 @Component, @Aspect어노테이션을 설정
 - 클래스 내부에 @Pointcut어노테이션을 선언한 메소드를 설정
 - @Before||@After||@Around||@AfterReturning||@AfterThrowing...
  실행할 메소드 선언부에 설정
 - 어노테이션을 처리할 수 있게 springbeanconfiguration.xml에 <aop:aspectj-autoproxy/>태그를 선언해줘야함.

3. maven dependency에 aspectjweaver모듈을 추가


사용 예시)보안 인증이 필요할 때,보안 모듈이 필요할 때

'스프링' 카테고리의 다른 글

Spring bean 등록, 주소 매핑 방식  (0) 2024.01.29
로깅(Logging) 시스템의 패턴 설정  (0) 2024.01.25
Spring, SpringBoot의 특징  (0) 2024.01.22
sql.Date 와 util.Date의 차이  (0) 2024.01.06
스프링부트 Security 적용하기  (0) 2023.12.21