Spring

Spring

AOP5

AOP를 공부하면서 AOP와 비슷한 기능을 하는 것처럼 보이는 다른 용어들과 많이 헷갈렸던 것 같아요. 오늘은 AOP와 비교하여 Filter, Interceptor, HandlerMethodArgumentResolver에 대해서도 간략하게 알아보도록 하겠습니다. Interceptor 먼저 Interceptor부터 살펴보도록 하겠습니다. Interceptor를 이해하기 위해선 우선 HandlerMapping에 대하여 알아야 합니다. HandlerMapping 은 DispatcherServlet 으로 하여금 요청이 왔을 때 해당 URL에 따른 메서드를 매핑하게 해줍니다. 그리고 실제 해당 메서드를 실행할 때는 HandlerAdapter 를 사용하죠. 위에서 언급한 HandlerMapping 와 같이 작동하는..

Spring

AOP4

AOP4 본 글은 천청향로님의 블로그 글을 참고하고 작성되었습니다. 지난 포스트 AOP3에서 AOP의 필요성과 용어에 대해서 알아봤었는데요. 오늘은 직접 구현해보고 그 안에 사용되는 코드에 대해 알아보도록 하겠습니다. 구현 실습 일단 실습환경은 SpringBoot + JPA + H2 Gradle 환경이구요. ApiQuestionController내 질문 생성, 업데이트폼 요청, 업데이트, 삭제 요청을 RestController를 통해 받는 상황입니다. RestController로 구성한 이유는 HttpStatus값을 이용하여 테스트하기 위함입니다. 그럼 코드를 보도록 하겠습니다. @RestController @RequestMapping("/questions") public class ApiQuestion..

Spring

AOP3

AOP3 Aspected Oriendted Programming(AOP) Introduction 지난 프로젝트(java-qna)에서 로그인한 유저인지 확인하기 위해 해당 요청에 따라 Session 을 확인했어야 했습니다. 위 부분은 저의 QuestionController 내 글 보기, 생성, 업데이트 이동, 업데이트에 관한 부분인데요. 매번 Session 을 확인하는 작업이 필요한 것을 볼 수 있습니다. 다음과 같은 구조인 것이죠. 개별 요청 하나하나만 보았을 때 중복되는 부분이 없어보입니다. 하지만 부가적인 기능의 관점에서 보면 중복이 확실하게 보이는데요. 바로 이 부분이죠. 여기서 AOP에 대한 필요성이 등장합니다. 공통된 부가기능은 따로 떼어두고 재사용하자는 것인데요. AOP(Aspect-Orien..

Spring

AOP2

AOP2 본 글은 코드스쿼드 백엔드과정에서 마스터 Pobi의 글을 참고하고 작성되었습니다. Aspected Oriendted Programming(AOP) Servlet Filter와 Interceptor 최근 Interceptor가 어떻게 흘러가는지(개념과 작동원리는 아직 공부 중입니다) 알게되면 과연 AOP와 무엇이 다른 것인지 궁금했습니다. 왜냐하면 흐름만 본다면 어떤 요청을 처리하기 전과 후에 저희가 필요한 작업을 할 수 있다는 점에서 비슷하다고 생각하였기 때문입니다. 하지만 다음 그림을 보면서 어떠한 것이 다른지 조금이나마 이해할 수 있게되었습니다. 출처 : 코드스쿼드 Pobi의 AOP자료 위 그림을 좀 더 살펴보기 전에 Servlet에 대해 알아야할텐데요. Stackoverflow에 다음과 같..

Spring

AOP

본 글은 코드스쿼드 백엔드과정에서 마스터 Pobi의 글을 참고하고 작성되었습니다. Aspected Oriendted Programming(AOP) AOP와 OOP OOP가 비즈니스 로직의 중복을 제거하기 위함이라면, AOP는 비즈니스 로직을 지탱하는 인프라 로직을 제거하기 위해 필요합니다. 비즈니스 로직? 인프라 로직? 무엇을 의미하는 것일까요? 비즈니스 로직 비즈닉스 로직은 객체의 상태값을 조작하는 행위로 그간 OOP 방식으로 객체에 메시지를 보내어 CRUD를 해왔던 로직을 의미합니다. 인프라 로직 데이터 상태값은 변경시키지 않으면서 성능을 높이고, 보안을 강화하기 위해 처리해야 하는 로직을 말합니다. 그 예로 DB 트랜잭션 로직, 데이터 캐싱, 로깅, 성능 측정과 같은 로직이 있다고 합니다. '..

Spring

devtools 사용법

devtools 사용법 이번 글은 이 블로그의 글을 참고하여 작성되었습니다. 필요성 Spring framework에서 서버을 가동해놓고 코드를 변경해야 할 부분을 발견했다고 가정해봅시다. 이럴 경우 기존에는 코드를 수정하고 다시 서버를 재가동하여 결과를 확인해왔습니다. 매번 재시작 누르는 것도 여간 귀찮은 것이 아니죠. 하지만 devtools를 이용하면 코드를 변경한 부분이 있으면 자동으로 서버를 재시동 시켜줄 수 있습니다! 기존에 다른 블로그 글을 보면서 따라서 해왔는데요. 그 블로그 글이 '복사 + 붙여놓기'도 금지해놓고 또 언제 삭제되면 참고할 수도 없기 때문에 간략하게나마 정리해놓고자 글을 쓰게 되었습니다. 설정방법 build.gradle 파일에 의존관계를 설정합니다. dependencies { ..

Brad Lee
'Spring' 카테고리의 글 목록