안녕하세요 오늘은 Spring 심화 과정입니다. Spring AOP (Aspect-Oriented Programming) 에 대해서 알려드리려고 하는데요, Spring AOP는 스프링 프레임워크에서 제공하는 강력한 기능 중 하나로, 관심사(Concern)를 분리하여 코드를 모듈화하고, 효율성과 유지보수성을 향상시킬 수 있는 기능입니다.오늘은 Spring AOP의 개념, 주요 용어, 그리고 예제 코드를 통해 실제 사용법에 대해 자세히 알아보겠습니다.
AOP의 개념과 필요성
AOP는 관심사의 분리를 통해 코드의 모듈화를 촉진합니다. 이는 핵심 비즈니스 로직과 횡단 관심사(로깅, 트랜잭션 관리 등)를 분리함으로써 코드의 가독성과 재사용성을 향상시킵니다.
관련 용어 정의
- Aspect(관점): 횡단 관심사를 정의한 모듈. Spring AOP에서는 주로 Java 클래스로 표현됩니다.
- Join Point(결합점): 어드바이스가 실행되는 지점. 메서드 호출, 필드의 값 변경 등이 Join Point가 될 수 있습니다.
- Advice(어드바이스): 횡단 관심사를 담고 있는 코드 블록. Before, After, Around 등이 있습니다.
- Pointcut(포인트컷): Join Point의 부분 집합으로, 실제로 Advice가 적용되는 지점을 정의합니다.
Spring AOP 설정
Spring AOP를 사용하려면 먼저 설정이 필요합니다. XML이나 자바 기반의 설정을 사용할 수 있습니다.
<!-- XML 기반 설정 예제 -->
<aop:aspectj-autoproxy />
<bean id="myAspect" class="com.example.MyAspect" />
Before Advice
메서드 실행 전에 실행되는 어드바이스로, 주로 입력값의 유효성 검사나 로깅에 활용됩니다.
public class MyAspect {
public void beforeAdvice() {
System.out.println("메서드 실행 전에 수행되는 어드바이스");
}
}
After Advice
메서드 실행 후에 실행되는 어드바이스입니다. 보통 리소스의 정리나 로깅에 활용됩니다.
public class MyAspect {
public void afterAdvice() {
System.out.println("메서드 실행 후에 수행되는 어드바이스");
}
}
Around Advice
메서드 실행 전후에 실행되는 어드바이스로 메서드의 실행을 직접 제어할 수 있습니다.
public class MyAspect {
public Object aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("메서드 실행 전에 수행되는 어드바이스");
Object result = joinPoint.proceed();
System.out.println("메서드 실행 후에 수행되는 어드바이스");
return result;
}
}
After-Returning Advice
메서드가 정상적으로 실행된 후에 실행되는 어드바이스입니다. 메서드가 반환하는 값을 활용할 수 있습니다.
public class MyAspect {
public void afterReturningAdvice(Object returnValue) {
System.out.println("메서드가 정상적으로 실행된 후에 수행되는 어드바이스. 반환 값: " + returnValue);
}
}
After-Throwing Advice
메서드가 예외를 던질 때 실행되는 어드바이스이며 예외 처리에 활용됩니다.
public class MyAspect {
public void afterThrowingAdvice(Exception exception) {
System.out.println("메서드가 예외를 던질 때 수행되는 어드바이스. 예외: " + exception);
}
}
Pointcut 정의
어드바이스가 적용될 Join Point를 지정하기 위해 Pointcut을 정의합니다.
public class MyAspect {
@Pointcut("execution(* com.example.MyService.*(..))")
public void myPointcut() {}
}
Pointcut과 Advice 연결
Pointcut과 Advice를 결합하여 실제로 AOP를 적용합니다.
public class MyAspect {
@Before("myPointcut()")
public void beforeAdvice() {
System.out.println("메서드 실행 전에 수행되는 어드바이스");
}
}
위에서 짧게 설정 방법 및 예시코드와 함께 사용 방법에 대해서 알아보았습니다. Spring AOP는 횡단 관심사를 분리하여 모듈화하고, 코드의 가독성과 재사용성을 향상시키는 데에 중요한 역할을 하기 때문에 생소하더라도 꼭 짚고 넘어가야 할 개념입니다. 여러분들이 이 글을 통해서 스프링 기반 프로젝트에서의 개발 생산성을 높이는데에 도움이 되었으면 좋겠습니다. 오늘도 방문해주셔서 감사합니다.
'Spring' 카테고리의 다른 글
[Spring] 독립실행형 서블릿 애플리케이션 개발하기 (1) | 2024.01.29 |
---|---|
[JAVA 문법] 자바 메서드 오버로딩 개념과 사용 방법 익히기 (0) | 2024.01.15 |
Spring ThreadLocal 이용해서 스레드별 데이터 저장하는 방법 (0) | 2024.01.12 |
웹서버란 무엇인가 스프링 부트 프레임워크 이해하기 (0) | 2024.01.09 |