스프링 프레임워크에서 어드바이스(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 지원을 통해 어드바이스를 유연하게 구성하고 적용할 수 있습니다.
'IT > spring' 카테고리의 다른 글
스프링 After Returning 어드바이스 (0) | 2023.06.20 |
---|---|
아동발달지원계좌(디딤씨앗통장)지원 지원내용, 신청방법, 지원대상 (0) | 2023.06.20 |
스프링 포인트컷(Pointcut) (0) | 2023.06.19 |
스프링 Before 어드바이스 (0) | 2023.06.19 |
스프링 AOP Join Point (0) | 2023.06.18 |
댓글