zz1996zz
로그인
zz1996zz
로그인
AOP
수정이
·
2022년 6월 13일
팔로우
0
0
Spring
목록 보기
6/16
AOP(Aspect Oriented Programming)
AOP : 어떤 로직을 기준을 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다.
관심을 분리해서
횡단 관심
과
핵심 관심
으로 나눈다.
횡단 관심 : 비즈니스 메소드마다 실행될 공통의 로직을 뜻한다.
핵심 관심 : 비즈니스 메소드를 핵심 관심이라고 한다.
AOP 용어 정리
JoinPoint : 클라이언트가 호출하는 모든 비즈니스 메소드를 뜻한다.
Pointcut : 필터링된 비즈니스 메소드를 뜻한다.
@Pointcut("execution(* com.jeongsu.biz..*Impl.*(..)")
Advice : 횡단 관심에 해당하는 공통 기능의 메소드이다.
5가지 Advice 동작 시점이 있다.
Before
: 비즈니스 메소드 실행 전에 동작한다.
After
: 비즈니스 메소드 실행 후에 동작한다.
After Returning
: 비즈니스 메소드가 성공적으로 반환되면 동작한다.
After Throwing
: 비즈니스 메소드가 실행 중 예외가 발생하면 동작한다.
Around
: 클라이언트가 호출한 메소드를 가로채 비즈니스 메소드 실행 전후에 처리할 로직을 삽입할 수 있다.
Around로 동작하는 어드바이스 메소드는 반드시 ProceedingJoinPoint를 매개 변수로 받아야 한다.
Aspect or Advisor
포인트컷과 어드바이스의 결합이다.
애스팩트 설정에 따라 AOP의 동작 방식이 결정된다.
어드바이저는 DB 트랜잭션을 관리할 때 사용한다.
Pointcut 설정 예시
리턴 타입과 패키지 경로 사이에만 띄어쓰기가 있다.
리턴 타입 필터링
*
: 모든 리턴 타입을 허용한다.
void : 리턴 타입이 void인 메소드만 필터링한다.
!void : 리턴 타입이 void가 아닌 메소드만 필터링한다.
패키지 경로 필터링
com.jeongsu.biz.board : com.jeongsu.biz.board인 패키지를 필터링한다.
com.jeongsu.biz.. : com.jeongsu.biz로 시작하는 모든 패키지를 필터링한다.
com.jeongsu..board : com.jeongsu 시작하는 모든 패키지 중에서 패키지 마지막이 board인 패키지를 필터링한다.
클래스 이름 필터링
BoardServiceImpl : BoardServiceImpl 클래스를 필터링한다.
*Impl : 클래스 이름이 Impl로 끝나는 모든 클래스를 필터링한다.
메소드 이름 필터링
getBoardList : 이름이 정확하게 getBoardList인 메소드를 필터링한다.
get* : 이름이 get으로 시작하는 모든 메소드(get()도 포함)를 필터링한다.
매개변수 필터링
(..) : 모든 경우의 매개변수의 개수와 타입을 허용한다.
수정이
팔로우
이전 포스트
IoC와 DI
다음 포스트
Spring Security 간단한 사용법
0개의 댓글
댓글 작성