본문 바로가기

프로그래밍/SPRING 3.X

Spring Advice 태그

1. POJO 기반 AOP 구현

  - POJO 기반 Advice 클래스 작성

  - 설정파일에 AOP 설정

    + Advice class를 Bean으로 설정

    + <aop:aspect> 태그를 이용해 Advice, Pointcut을 설정한다.


2. 시점에 따른 5가지 태그

  - before

    : 대상 객체의 메소드가 실행되기 전에 실행됨

    + return type : 상관없으나 void로 한다.

    + argument : 없거나 JoinPoint 객체를 받는다.


  - after-returning

    : 대상객체의 메소드 실행이 정상적으로 끝난 뒤 실행됨

    + return type : 상관없으나 void로 한다.

    + argument : 없거나 JoinPoint 객체를 받는다.

    + returning 

       ++ B.L에서 리턴받은 값을 매개변수로 받을 수 있다..


  - after-throwing

    : 대상 객체의 메소드 실행 중 예외가 발생한 경우 실행됨

    + return type : 상관없으나 void로 한다.

    + argument : 없거나 JoinPoint 객체를 받는다.

    + throwing 

      ++ 던져진 Exception을 매개 변수로 받을 수 있다.


  - after

    : 대상객체의 메소드 실행이 종료된 뒤 오류발생 여부와 상관없이 무조건 실행된다.

    + return type : 상관없으나 void로 한다.

    + argument : 없거나 JoinPoint 객체를 받는다.



  - around

    : 위 네가지 Advice를 구현할 수 있는 Advice

    + return type : Object 또는 void     Around에서는 리턴타입이 중요하다.

    + argument

      ++ ProceedingJoinPoint

    + 실제 구동 메소드를 우리가 만들어야한다.

      ++ <aop:around method="aroundLogging" pointcut-ref="publicmethod"/>


      ++ public Object aroundLogging(ProceedingJoinPoint joinPoint) throws Throwable{
              // 1. before 코드

            try{

              Object retValue = joinPoint.proceed();   //대상 객체의 메소드 호출

              // 2. after - returning 코드

              return retValue; 호출한 곳으로 리턴 값을 넘긴다. - 넘기기전 수행가능

          }catch(Throwable e)

              // 3. after - throwing 코드

            throw e;      

           }finally{

             // 4. after 코드    

           }

       



3. AOP 용어 다시 정리

  - Target  : 핵심 사항을 가지고 있는놈

  - joinPoint : 어드바이저가 적용되는 시점. 어쨋든 실제적으로 조인포인트는 '적용 가능한 메소드'라고 보면된다.

  - Pointcut : 실제적으로 적용한 메소드(시점)을 포인트컷이라 한다.