개발자
로그인이나 권한은 인터셉터, 로깅이나 에러처리는 aop에서 처리하는게 좋다고 배웠는데 현재 저희 회사는 aop단에서 세션처리를 하고있어 궁금증에 질문올려봅니다. AOP에서 세션처리가 효율적인지 그리고 인터셉터에서 처리하는것과 비교하여 유의미한 차이가 있는지 질문드립니다!
답변 1
인기 답변
안녕하세요! AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)는 로직을 기준으로 핵심 관점(비즈니스 로직)과 부가 관점을 나누고, 관점을 기준으로 모듈화하는 것인데요, 데이터베이스 연결, 로깅, 파일 입출력, 시간 측정 등의 여러 번 반복해서 사용하는 흩어진 Aspect 를 모듈화해 핵심 로직에서 분리하여 재사용이 가능하도록 하는 방법입니다. 말씀하신 세션 처리가 정확하게 어떤건지는 모르겠습니다만, 혹시나 제가 생각하는 로그인이나 권한 체크등을 하는 로직이라면 요청이 유입되고 비지니스 로직을 타기 전에 수행해야하기 때문에 Interceptor 로 구현해도 무방하다고 생각합니다. AOP 로 위와 같은 세션 처리를 구현하게 될 경우 package 나 class, 함수 변경시 aop 가 정상적으로 동작하는지에 대한 체크가 필요하며, 자칫 의도치 않은 동작(예를 들어 세션처리를 하지 않아야될 곳에서 세션처리를 한다던지 등)을 경험할 수 있어 Interceptor 로 구현을 한다면 이러한 단점을 커버할 수 있습니다. 또한, Custom Annotation 을 정의하여 Interceptor 에 활용할 경우 Controller class 에서 어떤 Interceptor 를 타게 할지도 정의할수가 있어 AOP 보다 가독성과 요청에 대한 Workflow 를 명확하게 정의할 수 있습니다. 이와 관련되서 참고할만한 블로그 글을 공유드립니다. https://twer.tistory.com/entry/Spring-Interceptor-%EC%BB%A4%EC%8A%A4%ED%85%80-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98%EA%B3%BC-Intercepter-%EA%B5%AC%ED%98%84 부디 저의 짧은 지식이 작게나마 도움이 되시길 바라겠습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!