Dev.GA

[Spring] AOP(Aspect Oriented Programming)이란? 본문

Dev.Back-End/Spring

[Spring] AOP(Aspect Oriented Programming)이란?

Dev.GA 2018. 5. 8. 17:15


[Spring] AOP(Aspect Oriented Programming)이란?



AOP란 Aspect Oriented Programming의 약자로 단어 뜻 그대로 관점지향 프로그래밍이다.


AOP는 프로그램의 핵심인 비즈니스 로직과 분리되는 횡단관심사(cross-cutting concern)를 분리하여 모듈화하여 설계하고 개발하는 방법론을 뜻한다.


주로 우리가 개발하면서 사용하는 로깅이나 세션같은 기능을 개발할때 사용되는데

예를들어, 로깅에 있어 기능별 소스코드에 로깅을 위한 코드를 집어넣어 비즈니스 로직과 뒤섞여 프로그래밍하는 것이 아닌

로깅을 담당하는 특정 모듈을 만들어 해당 기능이 실행될때 이 모듈을 통해 로깅을 하는 것을 AOP라 할 수 있다.





위와 같이 횡단관심사를 따로 분리하여 핵심로직에 영향을 주지않고 핵심로직에서 벗어나 새로운 관점에서 바라본다하여 관점지향 프로그래밍(AOP)라 한다. 


그럼 AOP에 등장하는 용어들에 대해 알아보자.



1. 타깃(Target)


Target이란 말 그대로 부가기능(횡단관심사)로 분리된 모듈이 적용될 대상을 뜻한다.

로깅을 하기위한 해당 비즈니스 로직들이 이에 해당된다.



2. 어드바이스(Advice)


실질적으로 부가기능 모듈, 부가기능 모듈이 구현된 구현체를 뜻한다.

어드바이스는 에스팩트(Aspect)가 언제, 무엇을 할지를 정의하고 있다.



3. 조인포인트(Join Point)


어드바이스가 적용될 위치를 뜻한다.

다른 AOP프레임워크와 달리 Spring프레임워크에서는 메소드 조인포인트만 제공한다고 한다.

따라서 Spring프레임워크에서 조인포인트란 메소드, 즉 타킷 오브젝트가 구현한 인터페이스의 모든 메소드를 가리킨다.



4. 포인트 컷(Pointcut)


부가가능이 적용될 메소드를 선정하는 방법이다.

어드바이스가 적용될 조인포인트 중 실제 부가기능이 적용될 조인포인트를 선별하는 기능이라고 보면 된다.



5. 프록시(Proxy)


타겟을 감싸서 클라이언트의 요청을 대신 받아주는 오브젝트이다.



6. 어드바이져(Advisor)


포인트컷과 어드바이스를 하나씩 가지고 있는 오브젝트이다.

AOP의 가장 기본이 되는 모듈이다.



7. 에스팩트(Aspect)


에스팩트는 위에서 나온 부가기능이 정의된 어드바이스와 어드바이스가 적용될 포인트 컷의 조합이다.







전체적으로 AOP의 용어가 비슷비슷하여 실제 모듈화, 적용을 해보는 편이 이해가 훨씬 쉬울듯 하다.


다음 포스팅에서 AOP를 이용해 로깅처리하는 방법에 대해 직접 실습해보도록 하겠다.


'Dev.Back-End > Spring' 카테고리의 다른 글

[Spring] Spring IoC와 DI  (2) 2018.05.10
[Spring] Spring MVC와 Dispatcherservlet  (0) 2018.05.08
Comments