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에 적용할지를 지정하게 된다.
'백엔드 > 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 |