1. 소개
Spring Framework을 더 사용하기 쉽게 기본값으로 여러 라이브러리들을 추가해 준 버전
스프링 부트와 스프링 프레임워크는 다르다!
Spring Framework?
- 2002년에 자바 기반의 엔터프라이즈 애플리케이션을 개발하기 위해 나온 프레임워크
- IOC (Inversion of Control), DI (Dependency Injection), AOP (Aspect-Oriented Programming) 등의 개념을 도입하여 객체 간 결합도를 낮추고 유지보수성을 높임
- 스프링을 활용하면 웹, 데이터베이스, 보안, 메시징 등 다양한 기능을 통합하여 개발할 수 있음
특징
- 의존성 주입 (DI, Dependency Injection) 지원
- 객체간의 의존 관계를 XML, Java Config, 어노테이션을 통해 설정 가능
- 유지보수성이 높아지고 객체 간 결합도를 낮출 수 있음
- AOP (Aspect-Oriented Programming) 지원
- 로깅, 트랜잭션 관리, 보안 등 공통적인 기능을 별도로 관리 가능
- 트랜잭션 관리 (Transaction Management)
- JDBC, JPA, Hibernate 등 다양한 ORM 프레임워크와 함께 사용 가능
- Spring MVC 지원
- 웹 애플리케이션 개발을 위한 강력한 MVC 아키텍처 제공
- JDBC 및 ORM 통합
- 기존의 번거로운 JDBC 작업을 단순화하고 JPA, MyBatis 등의 ORM 프레임워크와 통합 가능
단점
- 설정이 복잡함
- XML 또는 Java Config 파일을 작성해야 해서 설정 과정이 많음
- 초기 개발 비용이 큼
- 프로젝트를 세팅하는 데 많은 시간이 소요됨
Spring Boot??
- 2014년에 나온 스프링 프레임워크의 확장판
- 스프링 기반 애플리케이션을 더 쉽게 설정하고 개발할 수 있도록 만든 경량화된 프레임워크
- Spring Boot = " 스프링 프레임워크 + 자동 설정 + 내장 서버"
특징
- 자동 설정 (Auto Configuration)
- spring-boot-starter를 사용하면 기본 설정이 자동으로 적용됨
- XML 설정 없이 간단한 애노테이션 기반 설정만으로 프로젝트를 구성 가능
- ex) spring-boot-starter-web을 추가하면 자동으로 Spring MVC + 내장 톰캣 설정이 됨
- 내장 웹 서버 제공 (Embedded Web Server)
- 별도의 외부 톰캣 설치 없이 내장된 서버를 실행할 수 있음
- Spring Boot Starter 패키지 제공
- spring-boot-starter-data-jap, spring-boot-starter-web, spring-boot-starter-security 등 다양한 스타터패키지 제공
- JAR 파일 실행 가능
- 스프링 부트 프로젝트는 독립 실행형 JAR 파일로 패키징 가능 -> 바로 실행 가능
- Actuator 기능 제공
- spring-boot-starter-actuator를 사용하면 애플리케이션 상태 모니터링 가능
단점
- 자동 설정이 편리하지만, 커스텀 설정은 복잡할 수 있음
- 내장된 라이브러리를 강제로 사용해야 함
차이점 정리
비교 항목 | Spring Framework | Spring Boot |
설정 방식 | XML 또는 Java Config 사용 | 자동 설정 |
웹 서버 | 외부 웹 서버 필요 | 내장 웹 서버 제공 |
프로젝트 설정 | 의존성 설정이 복잡 | spring-boot-starter로 간편 설정 |
배포 방식 | WAR 파일 배포 가능 | 독립 실행 가능한 JAR 파일 지원 |
속도 및 생산성 | 설정이 많아 개발 속도 느림 | 설정이 자동화되어 개발 속도 빠름 |
유연성 | 원하는 설정을 자유롭게 가능 | 자동 설정이 많아 상대적으로 떨어짐 |
Actuator 지원 | 별도 설정 해야함 | 기본 제공 |
목표 | 유연한 확장성과 다양한 기능 제공 | 빠른 개발과 간편한 설정 제공 |
결론
Spring Boot는 Spring Framework를 더 쉽고 빠르게 사용하기 위해 만들어진 프레임워크다!
차이점을 잘 알고 상황에 맞게 쓰자!
'Spring' 카테고리의 다른 글
[Spring] 동적으로 HTTP 상태 코드 설정 (0) | 2025.02.04 |
---|---|
[Spring] Bean (0) | 2025.02.04 |
[Spring] JPA(Java Persistence API) (0) | 2025.02.04 |
[Spring] IoC, DI, AOP (0) | 2025.02.04 |
[Spring] 컴포넌트 스캔(Component Scan) 정리 (0) | 2025.02.04 |