경제학도의 개발공간

[20180425]AOP(Aspect Oriented Programming) 본문

BackEnd/Spring

[20180425]AOP(Aspect Oriented Programming)

reallifeliver 2018. 5. 2. 15:40
반응형

AOP(Aspect Oriented Programming)




스프링 DI 가 의존성(new) 에 대한 주입이라면 스프링 AOP 는 로직(code) 주입이라고 볼 수 있다.








AOP (관심지향 프로그램밍)

주관심사
보조관심사 를 분리해서 작성

장점: 주관심사 로직은 핵심 코드 작업만 하면 되고
     
프로그램 호출 (ADD)       중간[proxy:가짜]        실함수 (void ADD(int x, int y))
                      [ 보조관심사 ]
                      [주관심사인 ADD 함수 주소 ]
                      [보조관심사  ]     
순서

1. Proxy 호출
2. 보조업무 처리
3. Proxy 처리 함수 (실제 구현된 주관심 함수 호출)
4. 제어권이 Proxy 메서드로 넘어오고 나머지 보조관심사 처리
5. 처리 작업 완료 후  호출한 쪽에 값을 반환



AOP 용어
 
1. 조인 포인트(Joinpoint) >> method 기반 (Spring)
     
     - 어드바이스가 적용될 대상
     - 횡단 관심 모듈의 기능이 삽입되어 동작할 수 있는 실행 가능한  곳

2. 포인트컷(Pointcut)

@Pointcut(within()) >> ()에 해당하는 패키지에 있는 모든 자바 파일에 적용시키겠다
@Pointcut(execution())  >>   ()에 해당하는 모든 메소드에 적용시키겠다.
@Pointcut(bean())  >>  ()에 해당하는 bean객체에 모두 적용시키겠다.

     - Joinpoint 대상에 적용될 위치
     - 어떤 클래스의 어느 조인포인트를 사용할 것인지를 결정하는 선택 기능
     
3. 어드바이스 (Advice)

     - 조인 포인트에서 삽입되어 동작되어질 코드
   
      *어드바이스(advise)의 종류
  • Before advice : 메서드 실행전에 적용되는 실행
  • After returning advice : 메서드가 정상적으로 실행된 후에 실행  (예외를 던지는 상황은 정상적인 상황에서 제외)
  • After throwing advice : 예외를 발생시킬 때 적용되는 Advice를 정의 (catch와 비슷)
  • Around advice : 메서드 호출 이전, 이후, 예외 발생 등 모든 시점에서 적용 가능한 Advice를 정의
      
4. 위빙, 크로스컷팅 weaving

     -- 포인트컷에 의해서 결정된 조인포인트에 지정된 어드바이스를 삽입하는 과정 
     
5. 애스팩트(Aspect)
     --포인트 컷과 어드바이스를 합쳐놓은것 
     
Spring AOP의 특징
   1) 표준 자바 클래스로 작성
   2) Runtime 시점에 Advice가 적용
   3) 메서드 단위의 조인 포인트만 가능     
     
 AOP의 구성요소
조인포인트(joinPoint) - 
횡단 관심 모듈의 기능이 삽입되어 동작할 수 있는 실행 가능한 특정위치
ex) 메쏘드가 호출되는 부분 또는 리턴되는 시점, 필드를 액세스하는 부분, 
     인스턴스가 만들어지는 지점, 
     예외가 던져지는 시점, 
     예외 핸들러가 동작하는 위치, 
     클래스가 초기화되는 곳 등이 대표적인 조인포인트가 될 수 있다. 
     각각의 조인포인트들은 
     그 안에 횡단 관심의 기능이 AOP에 의해 자동으로 추가되어져서 동작할 수 있는 
     후보지가 되는 것이다.
포인트컷(pointCut) - 
어떤 클래스의 어느 조인포인트를 사용할 것인지를 결정하는 선택 기능
AOP가 항상 모든 모듈의 모든 조인포인트를 사용할 것이 아니기 때문에 필요에 따라 
사용해야 할 모듈의 특정 조인포인트를 지정할 필요가 있다. 
일종의 조인포인트 선정 룰과 같은 개념이다. 
AOP에서는 포인트컷을 수행할 수 있는 다양한 접근 방법을 제공한다. 
AspectJ에서는 와일드카드를 이용한 메쏘드 시그니처를 사용한다


반응형

'BackEnd > Spring' 카테고리의 다른 글

[20180503]Mybatis WIth Spring  (1) 2018.05.03
[20180503]Mybatis  (0) 2018.05.03
[20180501]HandlerInterceptor  (0) 2018.05.01
[20180424]Spring_Annotation  (0) 2018.04.30
[20180426] Spring MVC  (0) 2018.04.30