[Spring] 02. Spring Framework란?

[Spring] 02. Spring Framework란?

이전 글에서는 Spring이 왜 필요한지 살펴봤습니다. Servlet과 JSP만으로도 웹 애플리케이션을 만들 수 있지만, 기능이 많아질수록 코드가 복잡해지고 유지보수가 어려워집니다. Spring은 이런 문제를 줄이고, 더 안정적인 Java 웹 애플리케이션을 만들기 위해 사용합니다.

이번 글에서는 Spring Framework가 무엇인지, 그리고 Spring Boot와는 어떤 차이가 있는지 정리해보겠습니다.


1. Framework란?

Spring을 이해하려면 먼저 Framework라는 단어부터 알아야 합니다. Framework는 개발자가 애플리케이션을 만들 때 사용할 수 있는 기본 구조와 규칙을 제공하는 도구입니다.

쉽게 말하면, Framework는 개발자가 처음부터 모든 구조를 직접 만들지 않아도 되도록 도와주는 뼈대입니다. 게시판, 회원 기능, 관리자 페이지, API 서버 같은 프로그램을 만들 때 반복적으로 필요한 구조를 미리 제공해줍니다.

Framework 애플리케이션을 만들기 위한 기본 구조와 흐름을 제공하는 도구
Spring Framework Java 애플리케이션을 더 체계적으로 만들기 위한 대표적인 프레임워크

Framework를 사용하면 개발자는 전체 구조를 매번 새로 고민하기보다, 정해진 흐름 안에서 필요한 기능에 집중할 수 있습니다.


2. Spring Framework란?

Spring Framework는 Java 기반 애플리케이션을 만들기 위한 프레임워크입니다. 웹 애플리케이션뿐만 아니라 일반 Java 프로그램, API 서버, DB 연동 프로그램 등 다양한 형태의 애플리케이션을 만들 때 사용할 수 있습니다.

Spring의 가장 큰 특징은 객체를 직접 관리하는 부담을 줄여준다는 점입니다. 일반적인 Java 코드에서는 개발자가 필요한 객체를 직접 생성해서 사용합니다.

BoardService boardService = new BoardService();

하지만 Spring을 사용하면 객체 생성과 연결을 Spring이 대신 관리할 수 있습니다. 개발자는 객체를 어떻게 만들고 연결할지보다, 각 객체가 어떤 역할을 해야 하는지에 더 집중할 수 있습니다.

이 구조 덕분에 Controller, Service, Repository 같은 계층을 나누기 쉬워지고, 기능이 많아져도 코드를 비교적 안정적으로 관리할 수 있습니다.


3. Spring이 해주는 일

Spring은 단순히 웹 페이지를 보여주는 도구가 아닙니다. 애플리케이션을 만들 때 필요한 여러 기능을 제공합니다.

객체 관리 필요한 객체를 생성하고 연결해줍니다.
웹 요청 처리 사용자의 요청을 Controller로 전달하고 응답을 처리합니다.
DB 연동 JDBC, MyBatis, JPA 등을 사용해 DB와 연결할 수 있습니다.
트랜잭션 처리 여러 DB 작업을 하나의 작업처럼 안전하게 처리할 수 있습니다.
공통 기능 분리 로그, 보안, 예외 처리 같은 공통 기능을 분리해서 관리할 수 있습니다.

이 중에서 처음 Spring을 배울 때 가장 먼저 이해해야 하는 것은 객체 관리입니다. 객체를 Spring이 관리한다는 개념을 이해해야 IoC, DI, Bean 같은 개념도 자연스럽게 이어집니다.


4. Spring의 핵심 구조

Spring으로 웹 애플리케이션을 만들 때는 보통 역할을 나누어 개발합니다. 대표적으로 Controller, Service, Repository 또는 Mapper 계층을 사용합니다.

Controller 사용자의 요청을 받는 계층입니다.
Service 기능의 흐름과 규칙을 처리하는 계층입니다.
Repository / Mapper DB와 데이터를 주고받는 계층입니다.
DTO / VO 계층 사이에서 데이터를 전달하는 객체입니다.

예를 들어 게시글 등록 기능은 다음과 같은 흐름으로 처리할 수 있습니다.

사용자 요청
 → Controller
 → Service
 → Repository 또는 Mapper
 → DB 저장
 → 결과 응답

이렇게 흐름을 나누면 코드가 한 곳에 몰리지 않습니다. 요청 처리, 기능 규칙, DB 접근을 각각 분리할 수 있기 때문에 수정과 확인이 쉬워집니다.


5. Spring과 Spring Boot의 차이

Spring을 공부하다 보면 Spring Framework와 Spring Boot라는 말을 자주 보게 됩니다. 둘은 같은 것이 아닙니다.

Spring Framework는 Java 애플리케이션을 만들기 위한 핵심 프레임워크입니다. 반면 Spring Boot는 Spring을 더 빠르고 편하게 사용할 수 있도록 도와주는 도구입니다.

Spring Framework Java 애플리케이션을 만들기 위한 핵심 프레임워크
Spring Boot Spring 설정을 간단하게 만들고 실행을 쉽게 해주는 도구

기존 Spring Framework에서는 설정 파일을 직접 작성해야 하는 부분이 많았습니다. 프로젝트 설정, 서버 설정, 의존성 설정 등을 개발자가 직접 맞춰야 했습니다.

Spring Boot는 이런 설정 부담을 줄여줍니다. 내장 Tomcat을 사용해 별도의 서버 설정 없이 실행할 수 있고, 자주 사용하는 설정도 자동으로 구성해줍니다.

Spring Framework = 핵심 구조
Spring Boot = Spring을 더 쉽게 실행하고 설정하게 해주는 도구

그래서 처음에는 Spring Framework의 핵심 개념을 이해하고, 이후 Spring Boot로 프로젝트를 만들어보는 흐름이 좋습니다.


6. Spring을 배울 때 중요한 순서

Spring은 처음부터 모든 개념을 한 번에 이해하려고 하면 어렵습니다. 특히 IoC, DI, Bean, Container 같은 단어가 한꺼번에 나오면 헷갈리기 쉽습니다.

그래서 다음 순서로 이해하는 것이 좋습니다.

  1. Spring이 왜 필요한지 이해하기
  2. Spring Framework가 무엇인지 이해하기
  3. 객체를 Spring이 관리한다는 개념 이해하기
  4. IoC와 DI 이해하기
  5. Bean과 Container 이해하기
  6. Controller, Service, Repository 구조 이해하기
  7. Spring MVC 요청 흐름 이해하기
  8. DB 연동과 트랜잭션 처리 이해하기

이 순서대로 보면 Spring이 단순한 문법 모음이 아니라, 애플리케이션을 구조적으로 만들기 위한 방식이라는 점이 보입니다.


정리

Spring Framework는 Java 애플리케이션을 체계적으로 만들기 위한 프레임워크입니다. 객체 관리, 계층 분리, 웹 요청 처리, DB 연동, 트랜잭션 처리 같은 기능을 제공합니다.

Spring의 핵심은 개발자가 모든 객체를 직접 만들고 연결하는 것이 아니라, Spring이 객체를 관리하고 필요한 곳에 연결해준다는 점입니다. 이 개념을 이해해야 앞으로 배울 IoC, DI, Bean, Container를 자연스럽게 이해할 수 있습니다.

다음 글에서는 Spring의 핵심 개념 중 하나인 IoC가 무엇인지 정리해보겠습니다.