본문 바로가기
IT/spring

스프링 어드바이스(Advice)

by 뉴코딩맨 2023. 6. 20.
스프링 프레임워크에서 어드바이스(Advice)는 AOP(Aspect-Oriented Programming)의 핵심 개념 중 하나입니다. 어드바이스는 핵심 비즈니스 로직에 부가적인 기능을 적용하는 데 사용됩니다. 스프링 어드바이스의 개념과 종류, 그리고 예시를 통해 자세히 알아보겠습니다.
 
 

어드바이스란?

어드바이스는 AOP에서 핵심 비즈니스 로직을 실행하기 전, 후 또는 중간에 실행되는 부가적인 기능입니다. 예를 들어, 로깅, 트랜잭션 관리, 보안 등의 공통적인 기능을 어드바이스로 구현하여 핵심 비즈니스 로직과 분리할 수 있습니다. 스프링은 다양한 종류의 어드바이스를 제공하여 다양한 상황에 맞게 사용할 수 있습니다.
 
 

어드바이스 종류

스프링에서는 다음과 같은 종류의 어드바이스를 제공합니다.
  • Before Advice: 핵심 비즈니스 로직 실행 전에 실행되는 어드바이스입니다. 주로 로깅, 인증, 인가 등의 기능을 구현할 때 사용됩니다.
  • After Returning Advice: 핵심 비즈니스 로직이 정상적으로 실행된 후에 실행되는 어드바이스입니다. 메서드의 반환값을 가공하거나 로그를 남기는 등의 후 처리 작업에 사용됩니다.
  • After Throwing Advice: 핵심 비즈니스 로직이 예외를 던진 후에 실행되는 어드바이스입니다. 예외 처리, 로그 기록 등을 수행할 수 있습니다.
  • After (Finally) Advice: 핵심 비즈니스 로직 실행 후 항상 실행되는 어드바이스입니다. 예외 발생 여부와 관계없이 항상 실행되며, 자원 해제 등의 마무리 작업에 사용됩니다.
  • Around Advice: 핵심 비즈니스 로직을 감싸고, 실행 전후에 원하는 동작을 수행하는 어드바이스입니다. 가장 유연한 어드바이스로, 메서드 실행 전후에 필요한 전/후처리 작업을 수행할 수 있습니다.
 
 

어드바이스 예시

다음은 스프링 어드바이스의 예시입니다.
 
@Aspect
@Component
public class LoggingAspect {

    @Before("execution(* com.example.service.*.*(..))")
    public void beforeAdvice(JoinPoint joinPoint) {
        String methodName = joinPoint.getSignature().getName();
        System.out.println("메서드 실행 전: " + methodName);
    }

    @AfterReturning(pointcut = "execution(* com.example.service.*.*(..))", returning = "result")
    public void afterReturningAdvice(JoinPoint joinPoint, Object result) {
        String methodName = joinPoint.getSignature().getName();
        System.out.println("메서드 실행 후: " + methodName);
        System.out.println("반환값: " + result);
    }
}
 
위의 예시에서는 @Before 어노테이션을 사용하여 핵심 비즈니스 로직 실행 전에 로그를 출력하는 어드바이스를 정의했습니다. 또한, @AfterReturning 어노테이션을 사용하여 핵심 비즈니스 로직 실행 후에 로그와 반환값을 출력하는 어드바이스를 정의했습니다. 이렇게 정의한 어드바이스를 스프링 AOP 설정에 등록하면 해당 메서드들이 실행될 때 어드바이스도 함께 실행됩니다.
 
 

결론

스프링 어드바이스는 AOP의 핵심 개념 중 하나로, 핵심 비즈니스 로직에 부가적인 기능을 적용하는 데 사용됩니다. 다양한 종류의 어드바이스를 활용하여 로깅, 트랜잭션 관리, 보안 등의 공통 기능을 핵심 로직과 분리할 수 있습니다. 스프링의 강력한 AOP 지원을 통해 어드바이스를 유연하게 구성하고 적용할 수 있습니다.
 

댓글