상세 컨텐츠

본문 제목

AOP core concern(primary concern) 20221104

command

by MustThanks 2022. 11. 4. 22:40

본문

반응형

Concern(중요한 것, 관심사, 기능)
  - s/w를 만들기 위해 필요한 처리해야 하는 구체적 요구사항이나 고려사항
  - 각 기능들

 1.  core concern(primary concern)
     - 핵심 기능(business component)  
     - 각 기능이 모두 cross-cutting concern이 필요

 2. corss-cutting concern
     - APP 전반에 걸쳐서 공통적으로 필요한 기능  
     - 비즈니스 로직에 속하지 않는 시스템 서비스
     - 비즈니스 컴포넌트(클래스)들과 복잡한 의존 관계 형성
     ex) 트랜잭션, 로깅 보안 , 인증 등




   a. Aspect(cross-cutting concern)
      - 여러 객체에서 공통으로 적용되는 공통 관심사항(공통 기능)
         핵신 기능 아닌 부수적인 기능(corss-cutting concern)
      - advice와 pointcut들의 모임
      ex) 트랜잭션,로깅,보안 인증 등

   b. Advice
      - 적용할 Aspects가 무엇이고 언제 사용할 것인지 정의
      - advice는 언제, 무엇을-어떤- (when, what) aspect를 핵심 로직(core concern)에 적용을 정의
      - 메소드 수행 전, 수행 후 , 예외 발생 후 등

   c. Target(주요 핵심 - core concern - )
      - advice를 이용하는 객체 (target 객체 - 주요 기능 객체 - )
      - advice 객체(부수적 기능 객체)

      * 비즈니스 로직을 구현하는 클래스(core concern)

   d. Weaving(삽입)
      - advice(aspects가 정의된)의 기능이 target객체가 실행되면 target객체의 필요한 위치에 가서 삽입되는것
      - aspect가 삽입되는 것
      ex) 컴파일 할 때, 클래스 로딩 될 때, 런 타임(실행 시) 등

   e. JoinPoint
      - Target Method의 어느 지점으로 weaving 할 것인지 정해 놓은 것
      - aspects가 적용될 수 있는 지점
      - 이곳에 Joinpoint 표시를 해놓으면 여기와서 Weaving 해라 
      ex) method 호출 때 , 예외 발생 시, 필드 변경할 때 지점 등

   f. Pointcut
      - weaving하는 지점에 패턴을 정해놓은 것
      - advice는 aspect의 언제 어떤(무엇)을 정의
      - pointcut는 어디에(where)를 정의
      - JointPoint가 더 큰 범위
       ex) start로 시작하는 메소드가 호출되면 어느위치의 pointcut 지점으로 weaving 해라는 패턴을 지정

    g. Advisor (= aspects)
      - advice + pointcut
      - advice의 method가 target의 어느 지점으로 weaving 되는지에 대한 정보를 보유하고 있는 것

    h. Proxy
      - target객체에 advice가 적용된 후 생성된 객체

관련글 더보기

댓글 영역