반응형

SPRING에서 AOP란 

 

대부분의 시스템이 공통으로 가지는 보안이나, 로그, 트랜잭션과 같이 비즈니스 로직은 아니지만, 반드시 처리가 필요한 부분을 스프링에서는 '횡단 관심사(Cross-Concern)'라고 하며, 스프링은 이러한 횡단 관심사를 분리해서 제작하는 것이 가능합니다.

AOP(Aspect Oriented Programming)는 이러한 횡단 관심사를 모듈로 분리하는 프로그래밍의 패러다임입니다.

또한 이러한 횡단 관심사의 가장 흔한 예는 보안이나 성능 모니터링과 같은 작업을 들 수 있습니다.

 

- 코드로 배우는 스프링 웹 프로젝트 출처 -

 

이론적으로는 이런 설명인데 이게 과연 소스상에서는 어떤 부분을 어떻게 구성했다 라고 말 할 수 있는 걸까 ?

 

실제 프로젝트를 진행하면서 스프링시큐리티를 이용하여 보안을 설정하였고, logger를 이용하여 로그를 남기는 등의 작업을 하였고, 이것을 나는 AOP를 구현하였다고 생각하고 있었지만......

일단 책에서는 

spring-aop 관련 라이브러리를 pom.xml에 추가하고 @Aspect 어노테이션을 선언한 컴포넌트를 구현한 것을 aop를 사용 하는 것이라 설명하고 있다.

@Before, @After @Around 등을 통해 설정을 한 비즈니스 로직 외 의 부분을 실행 하도록 설정하는 것이다.

 

 

그런데 작성하면서 느낀 점이 AOP에서 하는 기능은 Spring의 인터셉터(Interceptor)와 거의 같은 기능을 수행한다!!!

 

둘의 차이점은 파라미터의 차이!!! 

 

AOP는 JoinPoint 나 ProceedingJoinPoint 등을 활용하여 대상이 되는 메소드의 파라미터를 처리

Interceptor는 HttpServletRequest나  HttpServletResponse를 활용하여 파라미터를 처리

 

 

고로.... AOP의 개념을 알고... AOP를 직접 사용하진 않았지만 그에 걸맞는 기능인 인터셉터를 사용하여 구현한 적인 있다!!!!

 

 

반응형

+ Recent posts