목적
-
스프링(Spring Framework)
- 복잡한 엔터프라이즈 애플리케이션 개발을 위해 설계
- DI(Depedency Injection), AOP(Aspect-Oriented Programming), 트랜잭션 관리, 보안 등 다양한 기능을 모듈 형태로 제공
- 유연성과 확장성이 뛰어나지만, 초기 설정이 복잡함
-
스프링 부트(Spring Boot)
- 스프링 기반 애플리케이션을 빠르고 간편하게 구축하기 위해 개발.
- "Convention over Configuration" 원칙을 따르며, 복잡한 설정을 최소화
- 내장 서버, 자동 구성, 의존성 관리 등을 통해 개발 생산성을 극대화
설정
-
스프링
- XML, Java Config 등을 이용해 수동으로 설정해야함.
- 데이터소스, 트랜잭션, MVC 등의 설정을 직접 구성해야 하며, 초보자에게 진입 장벽이 높음.
- 예시: web.xml 파일 작성.
-
스프링 부트
- 자동 구성 (Auto-Configuration) 기능으로 대부분의 설정을 자동화
- application.properties 파일로 간단한 설정만 추가하면 ok.
- 예시: 내장 톰캣 서버 자동 실행
의존성 관리
-
스프링
- 필요한 모듈(Spring MVC, Spring JDBC 등)을 개별적으로 선택하고 버전으로 직접 관리 해야 함.
- 예시:
pom.xml 에 Spring Core, Spring Web 등 모듈을 일일이 추가.
-
스프링 부트
- 자동 구성(Auto-Configuration) 기능으로 대부분의 설정을 자동화
application.properties 파일로 간단한 설정만 추가하면 ok.
- 예시: 내장 톰캣 서버 자동 실행, 데이터 소스 자동 설정.
내장 서버
-
스프링
- War 파일로 패키징한 후 외부 웹 서버(톰캣)에 배포 해야함.
- 예시:
mvn package로 WAR 생성 -> 톰캣 서버에 배포
-
스프링 부트
- 내장 톰캣, 제티, 언더토우 서버 를 포함하여 실행 가능한 JAR로 패키징함.
- 예시:
java -jar myapp.jar로 즉시 실행 가능
배포 및 운영
-
스프링
- 외부 서버 설정과 배포 과정이 필요하며, 모니터링 도구는 별도로 구성해야 함.
-
스프링 부트
- 액추에이터(Actuator) 모듈로 건강 상태, 메트릭, 환경 정보 등을 REST API로 제공함.
spring-boot-devtools로 개발 시 자동 재시작, 라이브 리로드 기능을 사용할 수 있음.
결론
스프링 부트는 스프링의 복잡성을 해결하고 현대적 개발 방식을 지원하는 스프링 생태계의 진화로 이해 가능.