SpringFramework AOP

채종윤·2023년 8월 23일
0

1. 스프링 AOP의 @Aspect 어노테이션을 사용하여 메소드 호출 전에 작업을 수행하는 간단한 예제

1. Before사용

@Aspect // Aspect 역할을 수행하는 클래스
@Component // Spring 컨테이너에서 빈으로 등록
public class MyAspect {

    @Before("execution(* spring02aop.Calculator.factorial(..))")
    public void printBefore() {
        System.out.println("메소드 호출 전에 실행됩니다.");
    }
}

2) factorial.java

@Component
public class Calculator {

    public int factorial(int num) {
        if (num == 1) {
            return 1;
        }
        return num * factorial(num - 1);
    }
}

MyAspect 클래스의 @Before 어노테이션이 붙은 printBefore 메소드는 spring02aop.Calculator 클래스의 factorial 메소드가 호출되기 이전에 실행됩니다. 따라서 Calculator 클래스의 factorial 메소드가 호출될 때마다 "메소드 호출 전에 실행됩니다."라는 메시지가 출력될 것입니다. 이렇게 AOP를 사용하면 특정 메소드 호출 전 또는 후에 원하는 작업을 삽입할 수 있습니다.

2.Around 사용

@Around("execution( * factorial(..) )") //*은 return타입 ..은 패키지밑에 모든 서브패키지
	public Object printAround(ProceedingJoinPoint pjp) throws Throwable {
		System.out.println("around 전");		
		Object result = pjp.proceed();
		System.out.println("around 후");									// retun값 패키지 클래스 메소드
		return result;
	}
profile
안녕하세요. 백앤드 개발자를 목표로 하고 있습니다!

0개의 댓글