@Aspect?
Aspect의 역할과 중요성
Advice와의 결합
@Aspect의 장점
사용법 예시)
먼저, @Aspect 주석을 사용하여 Aspect를 정의하는 클래스를 만든다:
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class LoggingAspect {
@Before("execution(* com.yourpackage..*.*(..))")
public void logBeforeAllMethods() {
System.out.println("Method is about to be called");
}
}
여기서 LoggingAspect 클래스는 Aspect를 정의한다. @Before 주석은 특정 메소드가 호출되기 전에 실행될 로직을 지정한다. 이 경우 "execution(* com.yourpackage..*.*(..))"는 com.yourpackage 패키지 아래의 모든 클래스와 메소드에 대해 로깅을 적용하도록 지정한다.
이제, 이 Aspect를 사용하려면 스프링 프레임워크나 다른 AOP 프레임워크와 함께 통합해야 한다. 예를 들어, 스프링 프레임워크에서는 다음과 같이 Aspect를 활성화할 수 있다:
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAspectJAutoProxy
public class AppConfig {
// 다른 빈 설정들
}
@EnableAspectJAutoProxy 주석은 스프링에게 자동으로 AOP 프록시를 생성하도록 지시한다. 이를 통해 LoggingAspect에 정의된 로직이 적절한 시점에 자동으로 실행된다.