최근에 Multipart/form-data 형태의 데이터를 다루어야 했는데, PATCH나 PUT는 요청이 정상적으로 처리되지 않는 것을 확인했습니다. 그래서 어째서인지 이유를 찾아 보게 되었고, 이번에는 관련 내용에 대해 정리해보고자 합니다. 관련된 내용은 StackExchange에서 참고하였으며, 편하게 읽어주세요ㅎㅎ 1. HTML 폼(form) 요청이 PATCH와 PUT, DELETE를 지원하지 않는다. [ Multipart PATCH/PUT API 개발 과정 ] Multipart PATCH/PUT API 개발 개발을 진행하다가 데이터와 이미지를 함께 보내기 위해 Multipart/form-data 타입의 데이터를 다루어야 했습니다. 부서 특성상 평소에 폼 데이터를 다룰 일이 거의 없었는데, 평소에 ..
이번에는 오랜만에 자바 문법을 살펴보고자 합니다. Java7부터는 기존의 try-catch를 개선한 try-with-resources가 도입되었는데, 왜 try-catch가 아닌 try-with-resources를 사용해야 하는지, 어떻게 사용하는지 알아보도록 하겠습니다. 1. try-with-resources란? try-with-resources 사용법 예시 [ try-with-resources란? try-with-resources 사용법 예시 ] try-with-resources를 살펴보기 전에 try-catch-finally로 자원을 반납하는 경우를 먼저 살펴보도록 하자. 두 가지를 모두 보고 비교함으로써 왜 try-with-resources를 사용해야 하는지 더욱 납득할 수 있을 것이다. Java..
몇몇 포스팅과 조금 오래된 책들을 보면 필터(Filter)는 서블릿 기술이라서 Spring의 빈으로 등록할 수 없으며 빈을 주입받을수도 없다는 내용이 나옵니다. 하지만 실제로 테스트를 해보면 Filter 역시 스프링 빈으로 등록이 가능하고, 빈의 주입도 받을 수 있는데 왜 이러한 설명들이 나오게 되었는지 다뤄보고자 합니다. 1. 서블릿 필터(Servlet Filter)가 스프링 빈으로 등록 가능한 이유 [ 필터(Filter)는 스프링 빈으로 등록이 불가능했다! ] 몇몇 포스팅과 예전 책들을 보면 필터(Filter)는 서블릿 기술이라서 Spring의 빈으로 등록할 수 없다는 내용이 나온다. 또한 필터는 J2EE표준 스펙 기능이지만 인터셉터는 스프링 프레임워크가 제공하는 기술이므로 필터와 달리 인터셉터는 스..
업무를 진행하면 PR(Pull Request)를 올리고 리뷰 후에 머지를 하게됩니다. 문제는 머지된 브랜치가 자동 삭제되지 않는다는 것인데, 이러한 이유로 브랜치를 삭제하는 작업은 상당히 번거로우며 놓치는 경우도 생기게 됩니다. 그래서 이번에는 Github PR(Pull Request) 머지 후에 브랜치를 자동 삭제하는 설정을 해보도록 하겠습니다. 1. GitHub PR(Pull Request) 머지 후에 브랜치 자동 삭제하기 [ GitHub PR(Pull Request) 머지 후에 브랜치 자동 삭제하기 ] GitHub에서 협업을 하다 보면 PR(Pull Request)를 작성한 후에 이를 머지해야 한다. 문제는 머지된 브랜치가 자동으로 삭제되지 않아서 번거롭다는 것인데, 이러한 작업을 위해 ProBot..
이번에는 SpringBoot의 실행 과정을 소스 코드로 직접 살펴보려고 합니다. 지난번에는 빈들을 찾아서 객체로 만들고 후처리를 해주는 refresh 메소드를 자세히 살펴보았는데, 마지막으로 DispatcherServlet(디스패처 서블릿) 동작 과정을 코드로 살펴보려고 합니다. 많은 디자인 패턴이 적용되어 있고, 요청을 처리하는 프론트 컨트롤러이자 핵심 클래스인만큼 열심히 살펴보도록 하겠습니다. 아래의 내용은 SpringBoot 2.6.3를 기준으로 작성되었습니다. 1. DispatcherServlet(디스패처 서블릿) 동작 과정 [ DispatcherServlet(디스패처 서블릿) 동작 과정 ] 디스패처 서블릿은 모든 요청을 가장 먼저 받는 프론트 컨트롤러이다. 디스패처 서블릿의 동작 과정을 이해하기..