Notice
Recent Posts
Recent Comments
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
10-10 22:21
Archives
Today
Total
관리 메뉴

Developer_Neo

[Spring 입문] - AOP 본문

Spring

[Spring 입문] - AOP

_Neo_ 2022. 8. 6. 22:45
반응형

AOP란?

Aspect Oriented Programming(관점 지향 프로그래밍)이다.
여러 객체에 공통적으로 적용할 수 있는 기능을 따로 정의해서, 다른 객체에 삽입해 코드의 재사용성을 높여주는 프로그래밍 기법

공통 관심 사항과 핵심 관심 사항으로 나뉘어지는데, 핵심 관심사항은 우리가 해왔던 회원 가입, 회원 조회등에 해당하고, 공통 관심 사항은 모든 메서드들에 대해 시간 측정하는 것으로 볼 수 있다.
공통 관심 사항을 핵심 관심 사항으로만 되어 있는 곳에 일일이 코드로 다 작성을 하게 된다면, 매우 번거롭다. 이에 공통 관심사항과 핵심 관심사항을 분리하기 위해 사용하는 것이 AOP이다.

즉, 코드들을 보았을 때 공통적으로 존재하는 코드들은 공통 관심 사항으로 분리해, 원하는 곳에 AOP로 적용할 수 있을 것이다.

 

메서드가 호출될 때마다 joinpoint에 넘겨서 AOP로 작성한 코드를 진행할 수 있다.  재귀적으로 일어난다.

위와 같이 진행하여, 핵심 관심 사항과 공통 관심사항을 분리하여 유지보수가 쉽게 될 수 있다.

 

실제 어떻게 동작 하는가?

 

AOP 적용 전 의존 관계

컨트롤러에서 Service를 호출할 때 의존 관계에 따라 그냥 Service의 메서드를 호출 한다.

 

AOP 적용 후 의존 관계

스프링이 Service에 대한 것을 가짜 Service인 프록시를 스프링 컨테이너에서 진짜 Service보다 앞에 세워둔다. 그러면 컨트롤러에서는 가짜 Service인 프록시를 바라보게 되어 있다. 그리고 Controller에서 Service의 메서드가 호출되면, 내부적으로 joinPoint,proceed()가 호출되면서, 이때 진짜 Service를 호출된다.

 

 

 

 

 

반응형
Comments