AOP어플리케이션 작성 (annotation)이란?
Aspect 클래스 선언 및 설정
Aspect 클래스 구현의 이해
Aspect 테스트
SpringAOP 구현방식
- XML
- Annotion
annotation 방식
- @Aspect 사용한다.
- XML설정파일에 <aop:aspectj-autoproxy />를 설정한다.
@Aspect 란?
- Aspect 클래스 선언할 때 사용한다.
- AspectJ 5버전에 새롭게 추가된 어노테이션이다.
- @Aspect 어노테이션을 이용할 경우 XML 설정 파일에 어드바이스와
포인트컷을 설정하는 것이 아니라 클래스 내부에 정의할 수 있다.
- <aop:aspectj-autoproxy />태그를 설정파일에 추가해서 사용한다.
xml설정파일에 추가
@Before("pointcut")
- 타겟 객체의 메서드가 실행되기 전에 호출되는 어드바이스이다.
- JoinPoint를 통해 파라미터 정보를 참조한다.
@After("pointcut")
- 타겟 객체의 메서드가 정상 종료됐을 때와 예외가 발생했을 때 모두 호출되는 어드바이스이다.
- 리턴값이나 예외를 직접 전달받을 수는 없다.
@Around("pointcut")
- 타겟 객체의 메서드가 호출되는 전,후 모든 과정을 담을수있는 강력한기능을 가진 어드바이스이다.
@AfterReturning(pointcut="",returning="")
- 타겟 객체의 메서드가 정상적으로 실행을 마친 후에 호출되는 어드바이스이다.
- 리턴값을 참조할 때는 returning 속성에 리턴 값을 저장할 변수 이름을 지정해야한다.
@AfterThrowing(pointcut="",throwing="")
- 타겟 객체의 메서드가 예외가 발생하면 호출되는 어드바이스이다.
- 발생된 예외를 참조할 때는 throwing속성에 발생한 예외를 저장할 변수이름을 지정해야한다.
@Before 어드바이스
- @Before 어드바이스를 이용해서 실행되는 타겟 객체의 메서드명과 파라미터를 출력하는 어드바이스이다.
- 아래의 before 메서드는 myspring 패키지 또는 그 하위 패키지에 있는 모든
public 메서드가 호출되기 이전에 호출된다.
ex)
@AfterReturning 어드바이스(정상적으로 종료되었을때)
- @AfterReturning어드바이스를 이용해서 실행되는 타겟 객체의 메서드명과 리턴값을 출력하는 어드바이스이다.
- 아래의 afterReturning 메서드는 myspring.user.service 패키지 하위에 있는 모든 public 메서드가 정상 종료된 이후에 호출된다.
- 리턴값을 참조할 때는 returning 속성을 이용해서 리턴 값을 담을 변수 이름을 지정해야한다.
@AfterThrowing 어드바이스(예외가 발생하였을때)
- @AfterThrowing 어드바이스를 이용해서 실행되는 타겟 객체의 메서드명과 예외메시지를 출력하는 어드바이스이다.
- 아래의 afterThrowing 메서드는 클래스명이 UserService로 시작되는 클래스에 속한 모든 메서드가 예외가 발생된 이후에 호출된다.
- 발생된 예외를 참조할 때는throwing 속성을 이용해서 예외객체를 담을 변수이름을 지정해야한다.
@After 어드바이스(정상적,예외 둘다 모두 호출)
- @After 어드바이스를 이용해서 실행되는 타겟 객체의 메서드명을 출력하는 어드바이스이다.
- afterFinally 메서드는 메서드명이 User로 끝나는 메서드들이 정상 종료됐을 때와 예외가 발생했을때 모두호출된다.
- 반드시 반환해야 하는 리소스가 있거나 메서드 실행 결과를 항상 로그로 남겨야하는 경우에 사용할 수 있다.
하지만 리턴 값이나 예외를 직접 전달받을 수는 없다.
'개발 소발 > 개발 Spring' 카테고리의 다른 글
Mybatis 셋팅이란? (0) | 2017.12.21 |
---|---|
MyBatis란? (0) | 2017.11.27 |
AOP어플리케이션 작성 (XML)이란? (0) | 2017.11.24 |
AOP란? (0) | 2017.11.24 |
jdbc환경설정(mysql)이란? (0) | 2017.11.21 |