Spring boot는 Spring을 더 쉽게 사용할 수 있도록 만든 확장 프레임워크이다.
Spring에 비해 인프라 설정을 간단하게 할 수 있도록 하여, 비즈니스 로직 구현에만 집중할 수 있게 해준다.
Spring이란?
자바 기반의 오픈소스 엔터프라이즈 애플리케이션 프레임워크이다.
대규모 기업용 시스템을 개발할 때 복잡한 설정을 간소화하고, 개발자가 비즈니스 로직에만 집중할 수 있도록 돕는 "도구의 모음"이자 "프로그래밍 틀" 역할을 한다.
간단히, 재료가 이미 구해진 가구를 조립하는 것과 같다.엔터프라이즈 애플리케이션 : 개인 사용자가 아닌 기업이나 대규모 조직의 비즈니스 목적을 달성하기 위해 설계된 대규모 소프트웨어 시스템
Spring의 주요 이점
1. 개발 속도 향상 : 자주 쓰는 기능이 대부분 만들어져 있음.
2. 유지보수 용이 : 코드 간의 의존성이 낮아져, 수정이 편리함.
3. 확장성 : spring boot, spring security 등 확장 기능 다수 보유.Spring의 단점
1. 설정이 많음.(XML, Java Config 등)
2. 초기 설정 난이도가 높음
- 이로 인해 프로젝트 시작에 있어서 시간이 오래 걸리며, 설정 실수로 인한 오류가 빈번하게 나타난다.
1. Auto Configuration (자동 설정)
의존성 추가만으로 설정을 자동으로 해줌
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2. Starter (의존성 관리)
Starter는 여러 라이브러리를 묶어둔 패키지다.
implementation 'org.springframework.boot:spring-boot-starter-web'
Spring MVC, Tomcat, JSON 처리 라이브러리를 포함하여 웹 서버를 간단하게 구축 가능
3. 내장 서버 (Embedded Server)
Spring Boot는 서버를 내장하고 있다.
./gradlew bootrun
Tomcat(기본), Jetty Undertow 서버를 포함하고 있으며, 별도 설치 없이 실행이 가능하며 실행 시 바로 서버에 올라간다.
4. Production Ready 기능
운영 환경을 위한 기능 제공
ex. Health Check, Metrics, Logging, Actuator 등
src
└─ main
├─ java
│ └─ com.example.project
├─ domain
│ ├─ entity
└─ dto
│ ├─ controller
│ ├─ service
│ └─ repository
└─ resources
├─ application.yml
└─ static