@EnableAspectJAutoProxy
@EnableAspectJAutoProxy
@SpringBootApplication
public class TestApplication {
...
}
최상위 패키지의 클래스에 @EnableAspectJAutoProxy 어노테이션 추가 필요.
@Aspect
aspect(공통 관심사)를 적용할 빈에 @Aspect 어노테이션을 추가해준다.
@Pointcut @Around 예시
@Pointcut("execution(* aaa.bbb.ccc.*Service.*Ddd(..))")
private void servicePointcutDdd() {}
@Pointcut("execution(* aaa.bbb.ccc.*Service.*Eee(..))")
private void servicePointcutEee() {}
@Around("servicePointcutDdd() || servicePointcutEee()")
public Object testAround(ProceedingJoinPoint jp) throws Throwable{
// jp 실행 전
Object rt = jp.proceed();
// jp 실행 후
return rt;
}
Pointcut은 Join point를 표현식으로 나타낸다. 반환 유형에 관계없이 aaa.bbb.ccc 패키지의 Service로 끝나는 클래스의 Ddd로 끝나는 함수의 모든 매개변수에 해당하며, Pointcut을 지정 후 Around에서 공통으로도 이용할 수 있다.
- @Pointcut
- * : 모든 유형
- (..) : 모든 매개변수
- Join Point는 aspect의 동작이 실행되는 특정 시점
참조
https://docs.spring.io/spring-framework/docs/2.5.5/reference/aop.html
반응형
'Programming' 카테고리의 다른 글
[리눅스] 디스크 용량 확인 cmd 방법 (df 옵션) (0) | 2022.12.30 |
---|---|
[Window] 윈도우 콘솔 커스텀 (터미널 테마 명령 프롬프트 설정) (0) | 2022.12.30 |
[Spring boot] build 및 jar 실행 (gradle 빌드) (0) | 2022.08.12 |
[Spring boot] Failed to load ApplicationContext Test 오류 해결 (vscode) (0) | 2022.08.12 |
스케일 아웃(Scale-Out) 스케일 업(Scale-Up) 이란 (0) | 2022.08.04 |