AOP(Aspect-Oriented Programming)

yujina25·2021년 4월 14일
0

Java

목록 보기
6/6

AOP란?

관점 지향 프로그래밍
: 관점에 따라 필요한 것들을 수행하는 것으로 필요한 작업에 관점을 두고 그에 따른 다양한 대상을 선별하여 간섭하는 것

Advice 에 간섭할 내용을 실제로 구현할 코드를 작성한다.
@Aspect 라는 어노테이션을 사용하여 해당 클래스가 Aspect 를 구현한 것을 명시해준다.

  • @Before : 간섭 대상이 실행되기 전
  • @After : 간섭 대상이 실행된 후
  • @AfterReturning : 간섭 대상 실행 성공 시
  • @AfterThrowing : 간섭 대상 실행 오류 시
  • @Around : 간섭 대상의 전체 상황 시
    (해당 메소드 직접 실행 가능 / 실행 전 / 실행 후 등)
@Aspect
public class TestAdvice {
	
    @Before("excution(* org.test.service.TestService*.test(String, String)) && args(a, b)")
    public void logBefore(String a, String b){
    	log.info("실행 전");
        log.info("a : " + a);
        log.info("b : " + b);
    }
}
// Aspect 결과
실행 전
a : hi
b : hello
// test 메서드 결과
hi hello

excution : 접근제한자와 특정클래스의 메서드 지정 가능

  • (* : 접근 제한자
  • TestService : 클래스
  • test : 메서드
  • test( : 파라미터 타입
  • args( : 변수명

@Aspect
public class TestAdvice {
	
    @AfterThrowing(pointcut = "excution(* org.test.service.TestService*.*(..))", throwing="exception")
    public void TestException(Exception exception){
    	log.info("exception : " + exception);
    }
    
}
// 메서드 : Integer.parseInt(a) + Integer.parseInt(b)
a : hi
b : 111
// Aspect 결과
exception : java.lang.NumberFormatException: For input string: "hi"
profile
개발자 코앞

0개의 댓글