웹개발/spring && springboot
스프링 AOP의 정의
지구별 여행자 임탱
2024. 2. 23. 21:11
728x90
Spring AOP는 스프링 프레임워크에서 제공하는 기능 중 하나로 관점 지향 프로그래밍을 지원하는 기술입니다.
Spring AOP는 로깅, 보안, 트랜잭션 관리 등과 같은 공통적인 관심사를 모듈화 하여 코드 중복을 줄이고 유지 보수성을 향상하는데 도움을 줍니다.
스프링 AOP의 핵심 개념
Aspect: AOP의 기본 단위로, 횡단 관심사를 모듈화한 것입니다.
Advice: 특정 조인 포인트(Join Point)에서 행동하는 코드로, 예를 들어 메소드 실행 전후에 실행되는 코드가 있습니다.
Join Point: Advice가 적용될 수 있는 지점으로, 스프링 AOP에서 메소드 실행 시점입니다.
Pointcut: Join Point의 부분 집합으로, Advice가 실제로 적용되는 지점을 정의합니다.
Target Object: Advice가 적용되는 객체로, 프록시를 통해 감싸집니다.
Proxy: AOP 프록시는 실행 시점에 스프링에 의해 AOP가 적용되는 객체를 감싸는 역할을 합니다.
스프링 AOP를 사용하면 로깅, 트랜잭션 관리, 보안 검사와 같은 공통 기능을 중복 없이 효과적으로 관리할 수 있게 됩니다.
의존성 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
@Aspect
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void beforeAdvice(JoinPoint joinPoint) {
System.out.println("Before method: " + joinPoint.getSignature().getName());
}
@After("execution(* com.example.service.*.*(..))")
public void afterAdvice(JoinPoint joinPoint) {
System.out.println("After method: " + joinPoint.getSignature().getName());
}
}
@Aspect 애노테이션을 사용하여 LoggingAspect 클래스를 Aspect로 정의하고, @Before와 @After 애노테이션을 사용하여 각각의 Advice를 선언하였습니다. 이렇게 설정하면, com.example.service 패키지 내부의 모든 메소드가 실행될 때 자동으로 로그가 출력됩니다.