AOP
Aspect
메인 로직과는 별개로 공통적으로 사용하는 기능들을 자동으로 실행
사전 준비
<!--pom.xml-->
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<!-- AspectJWeaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
작동 시점(Join Point)
매개변수로 JoinPoint를 받을 수 있으며, 실행 메소드의 정보가 들어있다.
- @Before : 메소드 실행 전
- @After : 메소드 실행 후
- @Around : 메소드 실행 전후, 메소드에 ProceedingJoinPoint 매개변수가 존재해야하며, preceed메소드로 원래 수행하려던 작업을 수행하고 결과를 리턴해야한다.(Object 타입)
- @AfterThrowing : 예외 발생 후
- @AfterReturning : 값 반환 후
작동 메소드 지정(Pointcut)
- 기본 형식 : execution(ret-type package.class.method(param))
각 경로 및 시그니처에 와일드카드를 사용할 수 있으며, 문자열과 와일드카드를 결합해 사용할 수 있다. 매개변수의 경우 ..은 0개 이상의 파라미터다.