Spring Framework와 Spring Boot
1. Spring Framework란?
- Java 기반의 엔터프라이즈 애플리케이션 개발을 위한 프레임워크
- 대규모 애플리케이션을 효율적으로 개발하고 유지보수할 수 있도록 다양한 기능 제공
Spring Framework 등장 배경
- 대형 쇼핑몰 시스템(엔터프라이즈 애플리케이션)
- 수백만 명의 고객이 동시에 상품을 검색하고, 장바구니에 담고, 결제를 시도
- 서버 성능, 신뢰성, 보안을 고려하면서 비즈니스 로직을 개발하는 것은 매우 어려움
- Spring Framework는 이러한 복잡한 문제를 해결할 수 있는 개발 환경을 제공하여 개발자는 비즈니스 로직에 집중할 수 있도록 지원
Spring Framework의 특징
- 유연한 구성 요소 연결 및 관리 → 다양한 애플리케이션 요소를 효율적으로 관리
- 오픈소스 프레임워크 → 누구나 자유롭게 사용 가능
- 모듈화된 아키텍처 → 필요한 기능만 선택적으로 사용 가능
- 객체 지향 프로그래밍(OOP) 지원 → Java의 객체 지향 특성을 적극 활용
☞ Spring Framework는 엔터프라이즈 애플리케이션 개발을 위한 강력한 지원을 제공
Spring Framework로 만드는 Web Application
- Web Application을 라면 끓이기에 비유하면:
- 라면(Java) + 냄비(Spring Framework) → Java 기반 애플리케이션 개발
2. Spring Boot란?
- Spring Framework를 기반으로 하여 더욱 간편하고 신속하게 애플리케이션을 개발할 수 있도록 도와주는 도구
- 복잡한 설정 없이 최소한의 코드만으로 실행 가능한 애플리케이션을 만들 수 있음
Spring Boot 등장 배경
- Spring Framework는 초기 설정과 구성 파일이 복잡하고 방대함
- 애플리케이션을 개발하고 배포하기 위해 여러 가지 의존성 관리와 서버 설정이 필요
- 최소한의 노력으로 Spring 애플리케이션을 쉽게 개발하고 배포할 수 있는 방법이 필요했음
Spring Boot의 특징
- 자동 설정(Auto Configuration) → 개발자가 직접 설정하지 않아도 기본 설정을 제공
- 내장 웹 서버(WAS) 제공 → 별도의 서버 설정 없이 애플리케이션 실행 가능 (Tomcat 기본 내장)
- Spring Boot Starter 제공 → 웹 애플리케이션에 필요한 종속성과 설정을 자동 구성
- 라이브러리 버전 자동 관리 → 호환 가능한 버전을 자동으로 설정 (단, 버전 충돌 가능성은 존재)
☞ Spring Boot는 설정을 최소화하고 빠른 개발을 지원하는 프레임워크
Spring Boot로 만드는 Web Application
- Web Application을 라면 끓이기에 비유하면:
- 라면(Java) + 냄비(Spring) + 조리 도구 세트(Spring Boot) → 더욱 간편하고 빠르게 개발 가능
3. Spring Boot의 핵심 기능
1) Spring Boot Starter
- 프로젝트에서 필요한 라이브러리를 자동으로 설정해주는 의존성 모음
- 예:
spring-boot-starter-web, spring-boot-starter-data-jpa
2) 자동 설정(Auto Configuration)
- 개발자가 별도로 설정하지 않아도 Spring Boot가 기본 설정을 제공
- 예: 데이터베이스 연결, 웹 서버 설정 자동화
3) 내장 웹 서버(Embedded Web Server)
- 별도 웹 서버를 설치할 필요 없이 내장된 서버로 애플리케이션 실행 가능
- 기본값: Tomcat (변경 가능)
4) Spring Boot Actuator
- 애플리케이션의 실행 상태를 모니터링할 수 있는 기능
/actuator 엔드포인트를 통해 상태 정보 확인 가능
☞ Spring Boot는 설정을 최소화하고, 개발을 빠르게 진행할 수 있도록 도와줌
4. Spring Boot 프로젝트 구조
my-spring-boot-app/
│── src/main/java/com/example/
│ │── controller/ # 웹 요청을 처리하는 컨트롤러
│ │── service/ # 비즈니스 로직을 담당하는 서비스
│ │── repository/ # 데이터베이스 접근을 담당하는 레이어
│ │── Application.java # Spring Boot 실행 진입점
│
│── src/main/resources/
│ │── application.properties # 설정 파일
│
│── pom.xml (Maven) or build.gradle (Gradle) # 의존성 관리 파일
☞ Spring Boot는 기본적인 프로젝트 구조를 제공하여 빠르게 개발할 수 있도록 지원
정리
- Spring Framework: 대규모 애플리케이션 개발을 위한 강력한 Java 프레임워크
- Spring Boot: Spring을 더 쉽게 사용할 수 있도록 자동 설정과 내장 웹 서버 제공
- Spring Boot의 핵심 기능: Starter, 자동 설정, 내장 웹 서버, Actuator 등
☞ 다음 강의에서는 Spring 프로젝트 생성 및 실행 방법을 학습할 예정!