본 글은 코드스쿼드 백엔드과정에서 마스터 Pobi의 글을 참고하고 작성되었습니다.
Aspected Oriendted Programming(AOP)
AOP와 OOP
OOP가 비즈니스 로직의 중복을 제거하기 위함이라면, AOP는 비즈니스 로직을 지탱하는 인프라 로직을 제거하기 위해 필요합니다.
비즈니스 로직? 인프라 로직? 무엇을 의미하는 것일까요?
비즈니스 로직
비즈닉스 로직은 객체의 상태값을 조작하는 행위로 그간 OOP 방식으로 객체에 메시지를 보내어 CRUD를 해왔던 로직을 의미합니다.
인프라 로직
데이터 상태값은 변경시키지 않으면서 성능을 높이고, 보안을 강화하기 위해 처리해야 하는 로직을 말합니다. 그 예로 DB 트랜잭션 로직, 데이터 캐싱, 로깅, 성능 측정과 같은 로직이 있다고 합니다. '인프라'라는 말 그대로 저희의 모든 코드 기저에 있어야 하기 때문에 많은 중복을 발생시키고, 가독성을 떨어트려 유지보수를 어렵게 한다는 특징이 있습니다.
AOP는 코드 내 이러한 인프라 로직의 중복을 제거함으로써 OOP로 이루어지는 비즈니스 로직에 집중할 수 있게끔합니다. 결국은 전혀 서로 관련이 없어 보이지만 상호보완적 관계인 것입니다.
AOP Interceptor와 MVC Interceptor차이
MVC Interceptor is a MVC only concept. They are more or less like Servlet Filters. They can intercept requests to the controller only. AOP can be used to intercept calls to any public method in any Spring loaded bean.
So, the question is when you would use one over the other? AOP is only option to use if you are trying to weave code into your service layer. A Controller method can be intercepted by either an Aspect or a HandlerInterceptor. The differrence is that the AOP advice only has access to the controller being called, and the parameters being passed to the method. A HandlerInterceptor always has access to the complete HttpRequest, HttpResponse and the object being called. So, if your interceptor is doing something that requires it to always have access to the Request and response, you should use HandlerInterceptor. If you want to do something with the parameters to the controller method, you should write an Aspect
출처 : https://coderanch.com/t/636483/frameworks/Spring-Interceptor-AOP
AOP의 필요성 및 용어에 대해서도 우선 알아야하는데 오늘 미션을 진행하느라 더이상 진행하지 못했네요.. 오늘은 여기까지 하고 계속 이어서 AOP에 대해서 알아보도록 하겠습니다.
'Spring' 카테고리의 다른 글
AOP3 (0) | 2018.12.21 |
---|---|
AOP2 (0) | 2018.12.13 |
devtools 사용법 (0) | 2018.12.08 |
IoC/DI & Spring Bean Life Cycle3 (0) | 2018.12.06 |
IoC/DI & Spring Bean Life Cycle2 (0) | 2018.12.05 |