Spring

최길중·2026년 1월 29일

✅ 의존성(Dependency)

📌

스프링 부트에서 의존성(Dependency)은 우리 프로젝트가 제대로 동작하기 위해 필요한 외부 라이브러리외부 코드를 의미합니다.

프로그램을 만들 때 모든 기능을 처음부터 끝까지 직접 개발하는 것은 비효율적입니다.

그래서 이미 다른 사람들이 만들어 놓은 편리한 기능(부품)을 가져와 조립해서 사용하는데, 이것이 바로 '의존성'입니다.


✅ 서블릿(Servlet)

📌

서블릿이란?


서버에서 실행되어 클라이언트의 요청을 처리하고, 그 결과를 동적으로 생성하여 응답하는 자바 프로그램입니다.

즉, 정적인 데이터가 아니라, 요청에 따라 다른 결과를 만들어내는 똑똑한 자바 클래스입니다.

자바 웹 애플리케이션에서 특정 URL 요청에 대한 비즈니스 로직을 실행하는 핵심입니다.

→ server(서버) + -let(작은)의 합성어로 작은 서버라는 뜻에서 지어졌습니다

📌

서블릿의 역할


  • 클라이언트가 보낸 데이터(HTTP Request)를 읽고 해석합니다.
  • 조회, 계산 등 비즈니스 로직을 수행합니다.
  • 결과를 생성하여 클라이언트에게 보냅니다.
  • jakarta.servlet.http.HttpServlet 클래스를 상속받아 구현합니다.

✅ 서블릿 컨테이너(Servlet Container)

📌

우리가 만든 서블릿 클래스(.java)는 스스로 실행될 수 없습니다.

서블릿을 실행하고 관리하며 웹 서버와 통신하게 해주는 전문적인 환경이 필요한데, 이를 서블릿 컨테이너라고 합니다.

그리고 가장 대표적인 서블릿 컨테이너가 바로 톰캣(Tomcat)입니다.

📌

서블릿 컨테이너의 역할


  • 서블릿의 생명주기(생성, 실행, 소멸) 관리
  • HTTP 요청을 받아 서블릿에게 전달
  • 서블릿의 응답을 받아 클라이언트에게 전송
  • 동시에 여러 요청이 들어와도 문제없이 처리

✅ MVC 패턴

👉

우리가 서블릿에서 겪었던 가장 큰 문제는 역할 분담의 부재였습니다.

📚

MVC패턴이란?


MVC 패턴은 하나의 Servlet이 혼자 모든 것을 처리하던 문제를 해결하기 위해
애플리케이션의 코드를 세 가지 역할로 명확하게 나누는 설계 방식입니다.

  • Model: 데이터와 비즈니스 로직을 담당합니다. (예: 영화 데이터, 추천 로직)
  • View: 사용자에게 보여지는 화면(UI)을 담당합니다. (예: HTML 페이지)
  • Controller: 사용자의 요청(Request)을 받아 Model과 View를 연결해주는 중간 다리 역할을 합니다.

✅ Thymeleaf

📌

타임리프(Thymeleaf)란?


서버에서 HTML을 동적으로 만들어주는 자바 기반의 도구, 즉 템플릿 엔진입니다.

→ HTML을 동적으로 만들어줄 수 있음에 주목해주세요!


✅ SSR과 CSR

📚

SSR(Server Side Rendering)


SSR은 서버가 웹 페이지에 필요한 모든 데이터를 채워 넣어 완벽하게 조립된 HTML 페이지를 브라우저에게 전달하는 방식입니다.

사용자는 거의 즉시 콘텐츠를 볼 수 있어 초기 로딩 속도가 빠르고, 모든 내용이 HTML에 포함되어 있어 검색 엔진 최적화(SEO)에 유리합니다.

타임리프가 바로 이 SSR 방식입니다.

💡

쉽게 말하자면 서버에서 완성된 HTML을 통째로 주는 것입니다.


CSR(Client Side Rendering)


CSR은 서버가 거의 텅 빈 HTML 뼈대와 자바스크립트 파일만 보내주는 방식입니다.

그러면 사용자 브라우저(클라이언트)가 자바스크립트를 실행해 필요한 데이터를 서버에 다시 요청하고, 브라우저가 직접 페이지를 조립하여 ****화면에 그립니다.

💡

쉽게 말하자면 클라이언트에서 자바스크립트로 그 때 그 때 HTML을 그려내는 것입니다.

React나 Vue 같은 최신 프론트엔드 프레임워크들이 이 방식을 사용합니다.

CSR은 초기 로딩은 느릴 수 있지만, 이후에는 앱처럼 부드럽고 빠른 화면 전환이 가능합니다.


✅ Controller와 RestController

1. @Controller

전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다.

2. @RestController

@RestController는 @Controller에 @ResponseBody가 추가된 것입니다.

📌

@ResponseBody란?

@ResponseBody는 Spring MVC 컨트롤러의 메서드에 사용되는 어노테이션입니다.

이 어노테이션이 붙은 메서드가 반환하는 값은 View를 찾는 데 사용되지 않고, HTTP 응답 본문(Response Body)에 직접 작성됩니다.

즉, JSON 형식으로 리턴하기 위해 필수적으로 사용해야하는 어노테이션입니다.


✅ PathVariable과 RequestParam은 언제 어떤 것을 써야할까?
@PathVariable은 URL 경로 자체에 값이 포함되기 때문에 반드시 값이 있어야 합니다.

@RequestParam은 쿼리 파라미터(?key=value)를 받아오게 되는데 각 Key/Value 값은 조건부입니다.

즉, 있어도 되고 없어도 되는 값일 때 사용합니다. 주로 검색용에 많이 쓰입니다.


profile
취준생

0개의 댓글