더미에 대해 설명 된 AOP 개념


19

누군가가 인형에 대한 AOP 개념을 설명 할 수 있습니까 : 결합 점, 포인트 컷, 직조 등

예 : Aspect : 여러 클래스를 가로 지르는 관심사를 모듈화합니다. 그게 무슨 뜻이야?

답변:


15

로깅, 감사, 보안과 같은 기능 그룹으로서의 문제를 생각하십시오.

이러한 기능은 대부분의 코드에 존재하지만 실제로는 우리의 동물-> 개 클래스에 살지 않습니다-많은 클래스에 있어야하는 기능입니다- 크로스 커팅 문제 입니다.

  • joinpoint를이 화면 코드가 실제로 실행되는 코드의 장소입니다.

  • 포인트 컷은 jointpoint에서 실행되는 어떤 코드를 말하는 방법이다.

  • 위빙 -컴파일러 / 시스템이 일반 코드를 가져 와서 모든 AOP 코드를 포함하여 올바른 코드 등을 트리거하는 경우입니다.이를 추가 프리 컴파일 단계로 생각할 수 있습니다.

이해하기 쉬운 간단한 예는 다음과 같습니다.

  1. 디버깅 목적으로 모든 메소드 호출을 추적하려고합니다 (즉, 어떤 메소드가 어떤 순서로 호출되는지 확인하려고 함).
  2. 메소드가 호출 될 때 메소드의 이름을 기록하는 aspect를 생성한다
  3. 우리는 코드의 모든 메소드와 aspect를 연관시키는 포인트 컷을 생성합니다. 대부분의 AOP 프레임 워크에서는 와일드 카드를 사용하여이 작업을 쉽게 수행 할 수 있습니다.
  4. 우리는 이제까지 호출 된 모든 메소드를 기록했습니다.

용어는 구현 및 AOP 프레임 워크에 따라 약간 씩 다릅니다.


긴 답변을 쓰는 ​​것처럼! 당신은 더 간결합니다. 명확성을 위해 약간 편집합니다.
Martijn Verburg

고마워, 나는 규칙을 배우고 잊어 버려야합니다.
Jonno

파이썬 데코레이터 또는 Lisp 매크로-Y / N으로 구현하는 것이 간단한 것 같습니다.
Paul Nathan

@Paul-두 구성에 익숙하지 않아서 내가 두려워한다고 말했지만 빠른 Google은 어느 쪽이든 대답 할 수있는 충분한 통찰력을주지 못했습니다.
Jonno

@PaulNathan : AOP는 동적 언어에서 매우 간단합니다. 오후에 간단한 AOP 프레임 워크를 만들 수 있습니다. Java와 같은 컴파일 된 언어에서는 그렇게 달콤하지 않습니다.
kevin cline

-1

순서대로 읽기

각 정의는 이전 정의를 기반으로합니다.

교차 절단 문제

응용 프로그램 전체에 걸쳐 모든 곳에서 (관심) 귀찮게하는 것. 예. 로깅 또는 보안

양상

기존 코드 이전 , 이후 또는 둘 다 ( 주변 )에 자동으로 추가되는 코드 덩어리

PointCut & JoinPoint

                  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에서는 매개 변수에 액세스 할 수 있으며 "이후"joinPoint에서는 반환 값에 액세스 할 수 있습니다. 예외가 발생하면 처리하거나 다시 던지기 위해 "시도 잡기"가 필요할 수 있습니다.

제직

포인트 컷 주위에 측면을 추가하는 과정


내 답변에 투표 한 사람이 있다면, 왜 그런지 의견을 남기십시오. 나는 그것에 대해 논쟁을 시작하지 않겠다고 약속한다. 그러나 나는 내가 더 잘했을 수있는 일을 알고 싶습니다. 감사합니다!
Prashant
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.