o-ohi-code 님의 블로그

[Framework] Spring Framework 란? 본문

프레임워크(Framework)/Spring

[Framework] Spring Framework 란?

o-ohi-code 2025. 4. 4. 12:01

Spring Framework

자바(Java) 기반 웹 애플리케이션을 만들기 위한 강력하고 유연한 오픈소스 프레임워크이다.

✔ 복잡한 자바 웹 개발을 쉽게 만들어주는 개발용 틀(Framework)
✔ 
로그인, DB 연결, 트랜잭션 처리, 보안 같은 복잡한 기능들을 자동으로 해주는 도구 모음

Spring Framework의 핵심 특징

  • DI : Dependency Injection (의존성 주입) : 객체를 직접 만들지 않고 스프링이 대신 주입해줌
  • loc (제어의 역전) : 객체의 생성과 흐름을 개발자가 X 스프링이 주도한다.
  • AOP (관점 지향 프로그래밍) : 로깅, 보안 트랜잭션 등 공통 기능을 분리 코드가 깔끔해짐.
  • Spring MVC : 웹 요청을 컨트롤러 - 서비스 - DAO 구조로 깔끔하게 처리.
  • 보안, 트랜잭션, 테스트 지원 : 로그인, DB 롤백 등 복잡한 것도 쉽게 처리 가능해진다.

🤔 왜 Spring Framework 를 사용하는 걸까?

  원래 자바 웹 개발은.. 객체 생성/연결을 직접 관리해야 했다. 또한 DB 연결, 트랜잭션 처리도 직접 하고, 로그인, 세션 등 모든게 수작업을 요구 했다.

하지만. Spring 은 이런걸 자동으로 해주고, 설계도를 제공해서 개발을 빠르고 안정적으로 할 수 있게 해준다.

Spring 
├─ Spring Framework : DI, IoC, AOP, MVC 등
├─ Spring Boot  :
빠르게 시작할 수 있게 도와주는 도구 
├─ Spring Security :
보안, 로그인, 권한 관리
├─ Spring Data JPA :
DB 연결
├─ Spring Batch :
대용량 배치 처리
├─ Spring Cloud :
마이크로서비스용 클라우드 연동
└─ ... 기타 수십 개의 모

 


Spring Framework 구조 (MVC + DI)

요청 → DispatcherServlet 
                         ↓
             HandlerMapping
                        ↓
             Controller ← @Controller
                        ↓
             Service ← @Service
                        ↓
             Repository ← @Repository
                        ↓
             DB

1. 요청 (Request) : 사용자가 브라우저(또는 클라이언트, 앱)에서 어떤 주소로 요청을 보냄
   ex) get /members. post/login

2. DispatcherServlet : 스프링의 중앙 관제탑 

   - 모든 요청이 이곳을 거친고,
   - 서블릿(Servlet) 기반으로, 스프링 웹의 진입점이다.
   - 어떤 컨트롤러에 이 요청을 넘겨줄지 결정한다. 

  ✔ 다만 DispatcherServlet 은 web.xml 에 등록하는 옛날 방식이다.
  ✔ 만약 Spring boot 툴을 사용하고 있다면? Spring Framework 내부에 자동으로 작동한다.

3. HandlerMapping : 요청 URL 과 컨트롤러 매핑 정보 찾기
   - URL 요청에 맞는 컨트롤러가 무엇인지 확인
   - @RequestMapping("/login") 같은 설정을 찾아준다.

4. Controller (@Controller, @RestController)
   - 사용자의 요청을 처리하고, 필요한 데이터를 받아오거나 응답 생성
   - 요청 받기 (로그인 요청)
   - 서비스 호출 (비즈니스 로직 수행)
   - 응답 반환 View(jsp), JSON 응답

5.  Service (@Service)
   비즈니스 로직을 수행하는 계층 (실제 계산, 처리, 조건 분기 등)  
   ✔ 실무에서 가장 많은 로직이 모이는 곳

6. Repository (@Repository)
   DB와 직접 연결되는 계층 (DAO 역할)

7. DB
   실제 데이터를 저장하는 데이터베이스 (MySQL, Oracle..)

 

이때문에 우리는 Spring Framework + Spring Boot 를 함께 사용한다.


  Spring Framework 만 쓸 때는

  • web.xml, dispatcher-servlet.xml 필요
  • WAS(톰캣 등..) 설치 
  • Bean 수동 등록
  • applicationContext.xml 필요
  • 프로젝트 구조 자유

Spring Boot 를 사용한다면?

  • web.xml X : (자동) 필요 없음
  • 내장 톰캣 (자동)
  • @ComponentScan (자동)
  • application.yml 하나로 설정
  • 기본 구조 권장 제공 (src/main/java 등)