스프링

AOP 란?

낙산암 2022. 1. 17. 21:03

1. AOP란?(aspect)

관심사 + 비지니스 로직

관심사란 = 주변로직
예)나눗셈 구현
핵심로직 : 나누는 로직
주변로직 : 0으로 나누는 것인가를 체크 하는 로직
관심사는 가장 중요한 로직은 아니지만 , 사전 조건이나 사후 조건 등이라고 간주 할수 있음.

 

 

또다른 설명으로는 횡단 로직이라고 표현됨.

계좌이체시 핵심로직 이외에 횡단으로 들어 가는 기본 로직등이 있음.

 

또한 DAO 구현시 핵심 로직 이외에 기본적으로 공통으로 처리되는 부분등을 Aspect(관심로직=공통로직=횡단로직) 이라고 할수 있음.

 

AOP 구현 하기

기본 라이브 러리 아래의 2개
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>

<!-- 스프링에서 AOP 처리가 된 객체를 생성할 때 AspectJ Weaver 라이브러리의 도움을 받아서 동작한다. -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${org.aspectj-version}</version>
</dependency>

AOP 단어 정리:
 
Aspect : 공통기능이 들어 있는 클래스(예제, 로깅... 트랜잭션 .. )
Advice : Aspect 클래스에 들어 있는 공통기능(한마디로 Aspcect 안의 함수)
JointPoint :  advice 함수가 적용되는 함수
PointCut : Jointpoint의 부분으로 실제로 적용되는 함수내의 지점
weaving: Advice를 적용하는 행위

 

 

적용대상: AOP 기능은 일반적인 JAVA API를 사용하는 (POJO-Plain Old java Object)들에 적용함.
controller는 적용은 가능하나 인터셉터나 필터등을 적용함.