Spring 7

WAR 배포와 JAR 배포의 근본적인 차이

웹 애플리케이션을 배포할 때 가장 자주 등장하는 두 가지 방식이 있다.WAR 배포JAR 배포겉으로는 “확장자만 다른 것”처럼 보이지만, 실제로는 서버 구조와 실행 책임이 완전히 다르다.이 글은 그 차이를 개념 중심으로 정리한다. 가장 중요한 차이: “서버가 누구냐”가 다르다WAR 배포의 철학서버(Tomcat)가 먼저 존재하고,애플리케이션은 그 서버에 ‘올려지는’ 형태Tomcat 같은 WAS/서블릿 컨테이너가 별도로 설치되어 있음내 애플리케이션은 WAR로 패키징되어 컨테이너에 배포(deploy) 됨컨테이너가 애플리케이션의 생명주기(시작/종료/로드)를 관리즉, WAR은 “서버에 끼워 넣는 플러그인” 같은 느낌이다. JAR 배포의 철학 (Spring Boot의 기본)애플리케이션이 서버(내장 Tomcat)를 ..

Spring 2025.12.16

Spring Boot는 이 과정을 어떻게 “감춰”주는가

Spring MVC를 전통 방식으로 구성해보면 보통 이런 단계를 직접 밟는다.web.xml로 DispatcherServlet 등록/매핑dispatcher-servlet.xml(또는 Java Config)로 MVC 설정Maven으로 WAR 빌드외부 Tomcat에 배포Tomcat 실행 후 접속그런데 Spring Boot를 쓰면 대부분이 안 보인다.이게 “마법”이 아니라, Boot가 기본값과 자동 설정(auto-configuration) 으로 필요한 조립을 대신 해주기 때문이다. “외부 Tomcat + WAR 배포”를 “내장 서버 + JAR 실행”으로 바꿔버린다전통 방식Tomcat이 먼저 있고그 위에 WAR를 올려서 앱을 실행한다즉:서버(컨테이너)와 애플리케이션이 분리Spring Boot 기본 방식애플리케이..

Spring 2025.12.16

DispatcherServlet이 들어오면 요청 흐름은 어떻게 바뀌는가

DispatcherServlet이 없을 때의 요청 흐름 (순수 JSP / Servlet)먼저, Spring MVC를 쓰지 않는 가장 기본적인 웹 애플리케이션 구조부터 보자.요청 흐름브라우저가 URL로 요청을 보낸다http://localhost:8080/app/index.jsp Tomcat이 요청을 받는다Tomcat이 요청 URL에 해당하는 파일을 직접 찾는다index.jsp가 있으면 바로 실행JSP 결과를 HTML로 만들어 브라우저에 응답 이 구조의 핵심은 이것이다.Tomcat이 요청 URL과 실제 리소스를 1:1로 직접 연결한다그래서:JSP를 만들기만 하면 바로 URL로 접근 가능했고컨트롤러라는 개념 자체가 필요 없었다 DispatcherServlet이 들어오는 순간, 구조가 바뀐다Spring MVC..

Spring 2025.12.16

Maven으로 WAR 빌드하고 Tomcat에 배포하기

Spring Boot를 사용하면 main() 하나로 서버가 바로 실행된다.하지만 전통적인 Spring 웹(Spring MVC) + Tomcat 배포 방식은 전혀 다르다.이 방식에서는 개발자가 직접:웹 애플리케이션을 WAR 파일로 빌드하고그 WAR를 Tomcat에 배포한 뒤Tomcat 서버를 실행해서브라우저로 접속하는 과정을 거쳐야 한다.처음엔 “왜 이렇게까지 해야 하지?”라는 생각이 들지만,이 구조는 단순히 불편한 게 아니라 역할 분리가 명확한 구조다. Tomcat과 웹 애플리케이션은 원래 분리되어 있다핵심부터 정리하면 이렇다.Tomcat → 웹 서버이자 서블릿 컨테이너 (프로그램)내 프로젝트 → Tomcat 위에서 실행될 웹 애플리케이션즉, Tomcat은:“서버 프로그램”이고내가 만든 Spring 웹..

Spring 2025.12.16

DispatcherServlet을 쓰면 Tomcat은 무슨 일을 할까?

이 질문에 답하려면,Tomcat과 Spring MVC의 역할을 분리해서 이해해야 한다.결론부터 말하면:Tomcat은 서버이자 컨테이너이고,DispatcherServlet은 Tomcat 안에서 실행되는 하나의 서블릿이다.둘은 경쟁 관계가 아니라, 역할이 완전히 다른 계층이다. Tomcat의 본질적인 역할Tomcat은 웹 서버이면서 동시에 서블릿 컨테이너다.Tomcat이 하는 가장 중요한 일은 다음과 같다.Tomcat이 하는 일네트워크 포트(보통 8080)를 열고 요청을 기다린다브라우저로부터 HTTP 요청을 받는다요청 내용을 해석해HttpServletRequest, HttpServletResponse 객체를 만든다설정(web.xml 등)을 보고“이 요청을 어떤 서블릿에게 넘길지”를 결정한다해당 서블릿의 se..

Spring 2025.12.16

Spring MVC에서 JSP가 동작하는 방식 정리

웹 애플리케이션을 처음 공부하다 보면 이런 의문이 생깁니다.“JSP 파일을 만들어놨는데 왜 URL로 바로 안 뜨지?”“왜 Spring MVC에서는 꼭 컨트롤러를 만들어야 하지?”그 이유를 Tomcat의 기본 동작 → Spring MVC 구조 변화 순서로 설명하겠습니다. Tomcat만 사용하는 기본 웹 애플리케이션 구조Spring을 사용하지 않는 순수 JSP/Servlet 웹 애플리케이션에서Tomcat은 매우 단순하게 동작합니다.기본 동작 흐름브라우저가 URL 요청예: /index.jspTomcat이 webapp 폴더에서 동일한 경로의 파일을 찾음JSP 파일이 있으면 실행 후 HTML 응답즉,URL 경로 = 파일 경로JSP는 정적 파일처럼 직접 접근 가능예시 구조:webapp/ ├─ index.jsp접속:..

Spring 2025.12.16

자바 애플리케이션 설정 방식

외부 설정과 어노테이션 설정은 무엇이고, 어떻게 구분해야 하는가?대부분의 자바 개발자가 스프링을 배우면서 가장 먼저 부딪히는 질문 중 하나는 다음과 같습니다.“설정은 외부 파일에 둬야 하나?아니면 어노테이션으로 코드 안에 둬야 하나?”이 질문은 단순한 기술 선택이 아니라,애플리케이션 구조, 유지보수성, 배포 전략과 직접 연결되는 매우 중요한 개념입니다.과거에는 XML을 기반으로 설정을 모두 외부화했지만,현대 스프링(특히 스프링 부트)에서는 어노테이션 기반의 코드 설정이 주류가 되었고,환경 차이에 따라 달라지는 값들만 외부 설정(application.yml)로 분리하는 방식이 정석이 되었습니다. "설정(Configuration)"이란 무엇인가?애플리케이션이 실행되기 위해서는 단순히 클래스와 메서드만 필요한..

Spring 2025.12.16