Spring
AOP (Aspect Oriented Programming)
snail voyager
2020. 5. 12. 23:00
728x90
반응형
프록시 (Proxy)
핵심 기능의 실행은 다른 객체에 위임하고 부가적인 기능을 제공하는 객체
AOP
여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 프로그래밍 기법
공통 기능 : 트랜잭션, 로깅, 보안
Advice : 언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의
- Before Advice : 대상 객체의 메서드 호출 전에 실행
- After Returning Advice : 대상 객체의 메서드가 익셉션 없이 실행된 이후에 실행
- After Throwing Advice : 대상 객체의 메서드를 실행하는 도중 익셉션이 발생한 경우 실행
- After Advice : 익셉션 발생 여부 상관없이 대상 객체의 메서드 실행 후 실행
- Around Advice : 대상 객체의 메시드 실행 전, 후, 익셉션 발생 시점에 실행
Joinpoint : Advice를 적용 가능한 지점. 스프링은 메서드 호출에 대한 Joinpoint만 지원
Pointcut : Joinpoint의 부분 집합으로서 실제 Advice가 적용되는 Jointpoint
Weaving : Advice를 핵심 로직 코드에 적용하는 것
Aspect : 여러 객체에 공통으로 적용되는 기능
AOP 구현 방법
- @EnableAspectJAutoProxy : @Aspect 붙은 Bean 객체를 찾아서 @Pointcut, @Around 설정을 사용
- Aspect로 사용할 클래스에 @Aspect을 붙인다
- @Pointcut으로 공통 기능을 적용할 범위를 지정
- 공통 기능을 구현한 메서드에 @Around 적용
- @Around 메서드의 ProceedingJoingPoint 파라미터는 프록시 대상 객체의 메서드를 호출할 때 사용
- proceed() 메서드를 사용해서 실제 대상 객체의 메서드를 호출
728x90
반응형