본문 바로가기
백엔드/Spring(Boot)

스프링 AOP

by 김어찐 2021. 8. 3.
728x90

AOP 주요 용어

용어 의미
Joinpoint Advic를 적용 가능한 지점을 의미, 메소드 호출 필드 값 변경등이 Joinpoin에 해당
PointCut Joinpoint의 부분집합, 실제로 Advice가 적용되는 Joinpoint를 나타낸다. 스프링에서는 정규 표현식이자 AspectJ의 문접을 이용하여 Pointcut을 정의
Advice 언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의.
메서드를 호출하기 전에 트랜잭션 시작(공통 기능) 지능을 적용한다는것을 정의하고 있다.
Weaving Adivce를 핵심 로직 코드에 적용한다는 것을 Weaving이라고 한다.
Aspect 여러 객체에 공통으로 적용되는 기능. 트랜잭션이나 보안등이 Aspect의 좋은 예이다.

 

세 가지 Weaving 방식

1. 컴파일 시에 Weaving 하기

2. 클래스 로딩 시 Weaving 하기

3. 런타임 시에 Weaving 하기(프록시 이용)

 

스프링에서의 AOP

스프링은 자체적으로 프록시 기반의 AOP를 지원하고 있다.

AOP는 메서드 호출 Joinpoint만을 지원한다. 필드 값 변경과 같은 Joinpoint를 사용하고 싶다면 AspectJ와 같이 다양한 Joinpoint를 지원하는 AOP 도구를 사용해야한다.

 

스프링 AOP 구현 방식

1. XML 스키마 기반의 POJO 클래스를 이용한 AOP 구현

2. AspectJ에서 정의한 @Aspect 애노테이션 기반의 AOP 구현

3. 스프링 API를 이용한 AOP 구현

 

스프링에서 구현 가능한 Advice 종류

Before Advice : 대상 객체의 메서드 호출 전에 공통 기능을 실행한다.

After Returning Advice : 대상 객체의 메서드가 익셉션 없이 실행된 이후에 공통 기능을 실행한다.

After Throwing Adicee : 메서드를 실행하는 도중 익셉션이 발생한  경우에 공통 기능을 실행한다.

After Advice : 대상 객체의 메서드를 실행하는 도중에 익셉션이 발생했는지의 여부에 상관없이 메서드 실행 후 공통 기

능을 실행한다.

Around Advice : 대상 객체의 메서드 실행 전, 후 또는 익셉션 발생 시점에 공통 기능을 실행하는데 사용된다.

 

XML 스키마 기반 AOP 구현 과정

1. 스프링 AOP를 사용하기 위한 의존을 추가한다.

2. 공통 기능을 제공할 클래스를 구현한다.

3. XML 설정 파일에 <aop:config>를 이용해서 Aspect를 설정한다. Advice를 어떤 Pointcut에 적용할지를 지정하게 된다.

728x90

'백엔드 > Spring(Boot)' 카테고리의 다른 글

SpringBoot @PostMapping  (0) 2021.08.04
스프링 부트 테스트  (0) 2021.08.03
@ResponseBody 설명  (0) 2021.08.03
gradlew.bat build 오류  (0) 2021.08.03
String Boot 기본 Controller  (0) 2021.08.03