Spring
AOP(Asperct Oriented Programming)- Aspect, Advice, jointpoint, pointcut, weaving
충 민
2022. 10. 26. 17:10

이번 글에서 AOP에 대해서 자세히 살펴보겠다.
AOP를 보기전에 이전 글을 살펴보고 오세요!
⬇⬇👇 아래 링크 클릭👇 ⬇⬇
AOP 목적 및 장점
- "중복을 줄여서 적은 코드 수정으로 전체 변경을 할 수 있게하자"라는 목적에서 출발
- AOP의 필요성을 이해하는 가장 기초가 되는 개념은 '관심의 분리(Separation of Concerns)' 임
- 핵심관점(업무로직) + 횡단관점(트랜잭션/로그/보안/인증 처리 등) 으로 관심의 분리를 실현
- 중복되는 코드 제거, 효율적인 유지보수, 높은 생산성, 재활용성 극대화, 변화 수용이 용이 등의 장점
Aspect 지향 프로그래밍 핵심 개념
- Aspect : Aspect는 트랜잭션 관리와 같이 여러 클래스에 걸쳐 있는 엔터프라이즈 애플리케이션 문제를 구현하는 클래스입니다. Aspect는 Spring XML 설정을 통해 구성된 일반 클래스일 수도 있고 Spring AspectJ 통합을 사용하여 @AspectAnnotation을 사용하여 클래스를 Aspect로 정의할 수도 있습니다.
- JoinPoint : 조인 포인트는 메소드 실행, 예외 처리, 객체 변수 값 변경 등과 같은 애플리케이션의 특정 포인트입니다. Spring AOP에서 조인 포인트는 항상 메소드의 실행입니다.
- Advice : Advice는 특정 조인 포인트에 대해 취해진 조치입니다. 프로그래밍 측면에서 애플리케이션에서 포인트컷이 일치하는 특정 조인 포인트에 도달하면 실행되는 메소드입니다. Advices는 Struts2 인터셉터 또는 서블릿 필터 로 생각할 수 있습니다 .
- Pointcut : Pointcut은 조인 포인트와 매칭되어 어드바이스의 실행 여부를 결정하는 표현식입니다. Pointcut은 조인 포인트와 일치하는 다양한 종류의 표현식을 사용하고 Spring 프레임워크는 AspectJ pointcut 표현식 언어를 사용합니다.
- Target Object : Advice가 적용되는 Object입니다. Spring AOP는 런타임 프록시를 사용하여 구현되므로 이 객체는 항상 프록시된 객체입니다. 즉, 런타임에 하위 클래스가 생성되어 대상 메서드가 재정의되고 구성에 따라 어드바이스가 포함됩니다.
- AOP 프록시 : Spring AOP 구현은 JDK 동적 프록시를 사용하여 대상 클래스와 어드바이스 호출이 있는 프록시 클래스를 생성합니다. 이를 AOP 프록시 클래스라고 합니다. Spring AOP 프로젝트에서 종속성으로 추가하여 CGLIB 프록시를 사용할 수도 있습니다.
- Weaving : Advised Proxy 객체를 생성하기 위해 다른 객체와 aspect를 연결하는 과정이다. 이것은 컴파일 시간, 로드 시간 또는 런타임에 수행할 수 있습니다. Spring AOP는 런타임에 위빙을 수행합니다.
AOP 조언 유형
조언의 실행 전략에 따라 다음과 같은 유형이 있습니다.
- Before Advice : 이러한 Advice는 조인 포인트 메소드가 실행되기 전에 실행됩니다. 어노테이션을 사용 @Before하여 어드바이스 유형을 Before 어드바이스로 표시할 수 있습니다.
- After (finally) Advice : 조인 포인트 메소드 실행이 완료된 후 정상적으로 실행되거나 예외가 발생하여 실행되는 조언입니다. @After어노테이션 을 사용하여 애프터 어드바이스를 생성할 수 있습니다 .
- After Returning Advice : 때때로 우리는 조인 포인트 메소드가 정상적으로 실행될 때만 어드바이스 메소드가 실행되기를 원합니다. 어노테이션을 사용 @AfterReturning하여 어드바이스를 반환한 후로 메소드를 표시할 수 있습니다.
- After Throwing Advice : 이 어드바이스는 조인 포인트 메서드가 예외를 throw할 때만 실행되며, 이를 사용하여 트랜잭션을 선언적으로 롤백할 수 있습니다. 우리는 @AfterThrowing이러한 유형의 조언에 주석을 사용합니다.
- Around Advice: 가장 중요하고 강력한 어드바이스입니다. 이 조언은 조인 포인트 방법을 둘러싸고 있으며 우리는 또한 조인 포인트 방법을 실행할지 여부를 선택할 수 있습니다. 조인 포인트 메소드 실행 전후에 실행되는 어드바이스 코드를 작성할 수 있습니다. 조인 포인트 메소드를 호출하고 메소드가 무언가를 리턴하는 경우 값을 리턴하는 것은 어라운드 어드바이스의 책임입니다. 우리는 @Around어드바이스 메소드를 생성하기 위해 어노테이션을 사용합니다.
Spring AOP Example Tutorial - Aspect, Advice, Pointcut, JoinPoint, Annotations, XML Configuration | DigitalOcean
www.digitalocean.com