답변:
로깅, 감사, 보안과 같은 기능 그룹으로서의 문제를 생각하십시오.
이러한 기능은 대부분의 코드에 존재하지만 실제로는 우리의 동물-> 개 클래스에 살지 않습니다-많은 클래스에 있어야하는 기능입니다- 크로스 커팅 문제 입니다.
joinpoint를이 화면 코드가 실제로 실행되는 코드의 장소입니다.
포인트 컷은 jointpoint에서 실행되는 어떤 코드를 말하는 방법이다.
위빙 -컴파일러 / 시스템이 일반 코드를 가져 와서 모든 AOP 코드를 포함하여 올바른 코드 등을 트리거하는 경우입니다.이를 추가 프리 컴파일 단계로 생각할 수 있습니다.
이해하기 쉬운 간단한 예는 다음과 같습니다.
용어는 구현 및 AOP 프레임 워크에 따라 약간 씩 다릅니다.
각 정의는 이전 정의를 기반으로합니다.
응용 프로그램 전체에 걸쳐 모든 곳에서 (관심) 귀찮게하는 것. 예. 로깅 또는 보안
기존 코드 이전 , 이후 또는 둘 다 ( 주변 )에 자동으로 추가되는 코드 덩어리
Application code
|
|
|
|
\|/
|
JoinPoint ----------->("before" aspect, on the way in) // just before your intercepted application code
Pointcut start--------> public String myMethod(params ...)
//your application code
Pointcut finish--------> return (foo)
JoinPoint ----------->("after" aspect, on the way out) // just after your intercepted application code
|
\|/
|
|
|
Application code
aspect의 일부가 실행되는 코드 실행 장소.
당신의 양상이 포인트 컷과 "결합"하는 지점. "이전"joinPoint에서는 매개 변수에 액세스 할 수 있으며 "이후"joinPoint에서는 반환 값에 액세스 할 수 있습니다. 예외가 발생하면 처리하거나 다시 던지기 위해 "시도 잡기"가 필요할 수 있습니다.
포인트 컷 주위에 측면을 추가하는 과정