2025/12 3

DispatcherServlet의 역할: 요청이 들어와서 응답이 나갈 때까지의 여정

Spring MVC로 웹 애플리케이션을 개발하다 보면 "DispatcherServlet"이라는 이름을 한 번쯤 들어보셨을 겁니다. Controller만 잘 작성하면 알아서 동작하니까 굳이 알 필요가 있나 싶을 수도 있습니다. 하지만 이 녀석이 어떻게 동작하는지 알면, 에러가 발생했을 때 어디서 문제가 생겼는지 파악하기가 훨씬 쉬워집니다. 오늘은 HTTP 요청이 들어와서 응답이 나갈 때까지 어떤 일이 벌어지는지 따라가 보겠습니다.DispatcherServlet이 뭔가요? DispatcherServlet은 이름 그대로 "배달하는(Dispatch) 서블릿"입니다. 쉽게 말하면 모든 요청을 가장 먼저 받아서 적절한 곳으로 배달해주는 중앙 관제탑 같은 역할을 합니다.비유를 하나 들어보겠습니다.큰 회사의 안내 데스..

Spring Bean의 생명주기(Lifecycle) - 객체 생성부터 소멸까지

Spring을 사용하다 보면 "Bean이 언제 생성되고 언제 사라지는 걸까?"라는 궁금증이 생길 때가 있습니다. 특히 데이터베이스 연결이나 네트워크 소켓처럼 애플리케이션 시작 시 미리 연결해두고, 종료 시 안전하게 끊어야 하는 리소스를 다룰 때 이 생명주기를 정확히 이해하는 것이 중요합니다.처음 Spring을 배울 때는 그냥 @Component나 @Service를 붙이면 알아서 다 해주겠거니 했는데, 실제로 운영 환경에서 리소스 누수 문제를 겪고 나서야 생명주기의 중요성을 깨닫게 되었습니다.Spring Bean의 생명주기란?Spring Bean은 스프링 컨테이너가 관리하는 자바 객체입니다. 일반적인 자바 객체는 new 키워드로 생성하고 참조가 사라지면 GC(Garbage Collector)가 알아서 정리..

DI(의존성 주입)과 IoC(제어의 역전): 왜 우리가 직접 new를 안 쓸까?

Spring을 사용하다 보면 자연스럽게 @Autowired나 생성자 주입을 쓰게 됩니다. 그런데 문득 생각해보면, 왜 우리가 직접 new로 객체를 생성하지 않는 걸까요? 이미 익숙하게 사용하고 있지만, 한 번쯤 개념을 정리해두면 좋을 것 같아서 글을 써봅니다.의존성(Dependency)이란?먼저 "의존성"이 무엇인지부터 짚어보겠습니다.public class OrderService { private PaymentProcessor paymentProcessor = new PaymentProcessor(); public void processOrder(Order order) { paymentProcessor.pay(order.getAmount()); }} 위 코드에서 OrderSe..