[Spring] Spring AOP- 어노테이션 방식

김승현·2022년 1월 19일
0

1. 스프링 설정 파일: aop:aspectj-autoproxy 엘리먼트를 선언

2. 어드바이스 클래스(2가지 방법)

  • 어노테이션 처리: @Aspect, @Component
  • 스프링 설정 파일에 <bean> 등록

3. 포인터 컷 설정 : @Poincut

	@Pointcut("execution(* org.kh.member.model.service..Service.(..))")
	public void allPointcut(){}

4. Advice 설정: 시점에 따라 어노테이션 적용
- @Before: 비즈니스 메소드 실행 전에 동작
- @AfterReturning : 비즈니스 메소드가 성공적으로 리턴되면 동작
- @AfterThrowing : 비즈니스 메소드 실행 중 예외가 발생하면 동작
- @After : 비즈니스 메소드가 실행된 후, 무조건 동작
- @Around : 호출 자체를 가로채 비즈니스 메소드 실행 전후에 처리할 로직을 삽입

@Aspect
@Component
public class AroundAdvice {

	@Pointcut("execution(* kr.or.iei.member.model.service.*Impl.*(..))")
	public void allPointCut() {}
	
	@Around("allPointCut()")
	public Member aroundLog(ProceedingJoinPoint pjp) throws Throwable {
		System.out.println("[aroundLog] 메소드 호출 '전'에 동작하는 로그");
		Member returnObj = (Member)pjp.proceed();	// proceed 메소드를 바탕으로 전화 후를 구분
		System.out.println("[aroundLog] 메소드 호출 '후'에 동작하는 로그");
		System.out.println(returnObj.getUserName()+" 님이 로그인을 하였습니다.");
		return returnObj;
	}
}
profile
개발자로 매일 한 걸음

0개의 댓글