Aop가 무엇인가?
관점 지향 프로그래밍을 위한 기술로 프록시를 활용하여 공통 관심사를 분리하는 기술이다.
@AspectJ 지원 활성화하기
aop를 활성화하기 위해서 자바 코드를 통해서 활성화를 한다.
@Configuration
@EnableAspectJAutoProxy
public class AppConfig {
}
하지만 @EnableAspectJAutoProxy
의 기본값이 enable이기 때문에 생략해도 aop가 적용된다!
Aop 클래스 설정
aop과 관련된 로직을 구현할 클래스를 생성하면 @Aspect
를 통해서 aop라는 메타 데이터를 작성해주어야한다. 이때 주의할 점으로는 @Aspect
를 선언하더라도 오토 스캔의 대상이 되지 않기 때문에 @Component
나 @Bean
을 통해서 빈으로 등록하는 설정을 해주어야한다는 것이다.
Aop 범위를 지정하는 법
포인트 컷을 선언하여 aop를 적용할 타겟을 설정할 수 있다. 스프링에서 다양한 표현식을 제공하기 때문에 다음 공식문서를 참고하여 작성한다.
https://docs.spring.io/spring-framework/reference/core/aop/ataspectj/pointcuts.html
Aop 로직이 실행되는 시점을 결정하기
aop를 적용할 로직이 실행되기 전, 성공적으로 실행된 이후, 에러가 발생한 경우 등등에 따라서 다르게 실행될 수도 있고 실행 전후로 실행하기를 원하는 경우도 있다 이런 요구사항을 반영하여 간단한 어노테이션으로 시점을 결정할 수 있다.
스프링이 제공하는 기능에 대한 자세한 모든 정보는 다음 공식문서를 참고하자
https://docs.spring.io/spring-framework/reference/core/aop/ataspectj/advice.html
Reference
https://docs.spring.io/spring-framework/reference/core/aop/ataspectj/aspectj-support.html
https://velog.io/@jeongyunsung/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%ED%95%B4%EB%B6%80%ED%95%99-AOP2-EnableAspectJAutoProxy-AbstractAutoProxyCreator
https://velog.io/@backtony/Spring-AOP-%EC%B4%9D%EC%A0%95%EB%A6%AC
'spring' 카테고리의 다른 글
[WireMock] WireMock을 이용하여 Mock API 서버 사용하기 (0) | 2024.01.21 |
---|---|
[Spring] RedisCacheManager에 대해서 (1) | 2024.01.13 |
테스트 코드에서 @Transactional 을 통한 롤백 사용시 주의점 (2) | 2023.12.04 |
Spring 메일 전송기능 구현하기 (3) | 2023.12.01 |
커스텀 Validation annotation 만들기 (1) | 2023.11.13 |