Aspected Oriented Programming (관점 지향 프로그래밍)
핵심 기능과 공통 기능을
구분
하고,
공통/부가 기능을 Aspect로 정의하여 필요한 시점에 적용하는 프로그래밍 방식
동작 시점 | 설명 |
---|---|
Before | method 실행 전 동작 |
After | method 실행 후 동작 |
After-returning | method 정상적으로 실행된 후에 동작 |
After-throwing | 예외가 발생한 후에 동작 |
Around | ㅇmethod 호출 이전, 이후, 예외 발생 등 모든 시점에서 동작 |
// rule
execution([1.접근제한자패턴] 2.리턴타입패턴 [3.타입패턴] 4.이름패턴 (5.타입패턴|..) [6.예외패턴])
// 모든 package에 포함된 class 중, 이름이 Service로 끝나는 class
execution( * *..*Service.findUserId(..))
// 최소한의 규칙
execution( * findUserId(..))
// find로 시작하는 method
execution( * find*(..))
// UserService 안에 있는 모든 method에 advice 주입
within(com.company.group.project.UserService)
// Service로 끝나는 class 안에 있는 모든 method에 advice주입
within(*..*Service)
@annotation(com.company.group.aop.SimpleProfiling)
@annotation(SimpleProfiling)