1. 개념과 철학의 차이
Spring Framework는 개발자가 직접 조립하는 구조이다.
각 설정파일을 직접 관리하고, 필요한 라이브러리 버전도 일일히 맞춰야 했다.
반면 Spring Boot는 "실행 중심 프레임워크" 이다.
내장 서버와 자동 설정을 통해 실행만 하면 바로 서비스가 구동된다.
| 구분 | Spring Framework | Spring Boot |
| 핵심 철학 | 개발자가 설정하고 조립 | 설정 자동화 + 실행 중심 |
| 실행 구조 | 외부 WAS 기반 | 내장 WAS 포함 (Tomcat 등) |
| 진입점 | web.xml → DispatcherServlet | main() → SpringApplication.run() |
2. 설정 구조의 진화
Spring 시절에는 web.xml, root-context.xml, servlet-context.xml 등 다수의 XML을 관리해야 했다.
Boot에서는 단 하나의 application.yml (혹은 .properties)로 모든 설정을 통합 관리한다.
- Bean 등록: XML의 <bean> 태그 대신 @Configuration, @SpringBootApplication
- DB/MyBatis: DataSource, Mapper를 직접 등록하던 시절 → Starter 의존성 하나로 자동 연결
- 환경 분리: application-dev.yml, application-prod.yml로 명확하게 구분
3. 실행과 배포 방식
Boot의 가장 큰 변화는 내장 WAS 구조이다.
기존엔 .war 파일을 만들어 Tomcat이나 JEUS에 배포했지만,
Boot에서는 .jar 하나로 독립 실행이 가능하다.
| 항목 | Spring Framework | Spring Boot |
| 빌드 산출물 | .war | .jar |
| 배포 형태 | 외부 WAS 필요 | 내장 Tomcat으로 단독 실행 |
| 실행 명령 | WAS 기동 후 WAR 로드 | java -jar 또는 IDE 실행 |
| 설정 위치 | server.xml, context.xml 등 | application.yml에서 통합 설정 |
4. 개발 생산성과 운영 효율
Boot는 설정보다 즉시 실행과 생산성에 초점을 맞췄다.
자동 구성, 통합 로깅, /actuator 모니터링 같은 기본 기능이 내장되어 있어 운영환경에서도 바로 쓸 수 있다.
| 항목 | Spring Framework | Spring Boot |
| 초기 설정량 | 많음 (XML 다수) | 적음 (자동 설정) |
| 테스트 | 복잡한 컨텍스트 로딩 | @SpringBootTest로 간단 |
| 로깅 | log4j 직접 구성 | logback 기본 내장 |
| 모니터링 | 직접 구현 | /actuator 자동 제공 |
| 배포 | WAR 중심 | JAR 중심 (CI/CD 용이) |
5. 디렉터리 구조 예시
Spring Framework (기존형)
/src/main/webapp/WEB-INF/web.xml
/src/main/resources/spring/root-context.xml
/src/main/resources/spring/servlet-context.xml
/src/main/java/.../controller/*.java
/src/main/java/.../service/*.java
/src/main/java/.../dao/*.java
- DispatcherServlet, Context 수동 등록 필요
- 외부 WAS(Tomcat, JEUS 등)에 WAR로 배포
Spring Boot (신형)
/src/main/java/com/example/Application.java
/src/main/resources/application.yml
/src/main/java/.../controller/*.java
/src/main/java/.../service/*.java
/src/main/java/.../mapper/*.java
- @SpringBootApplication으로 자동 스캔
- 내장 Tomcat 포함, 별도 WAS 배포 불필요
6. 정리 및 마무리
Spring Framework와 Spring Boot는 같은 뿌리에서 발전했지만, 추구하는 방향은 다르다.
Spring Framework는 세밀한 제어와 기업형 인프라 호환성에 강점을 가지며, 대규모 레거시 시스템에 적합하다.
반면 Spring Boot는 빠른 개발과 자동 설정, 단독 실행 환경에 초점을 맞추어 클라우드나 마이크로서비스, PoC 개발에 유리하다.
Spring Framework는 설정 중심의 조립형 프레임워크로서 구조를 세밀히 다루려는 개발자에게 적합하고,
Spring Boot는 실행 중심의 통합형 프레임워크로서 빠른 실행과 배포를 중시하는 실무형 개발에 최적화되어 있다.
'Java > Spring' 카테고리의 다른 글
| [Spring] Filter와 Interceptor의 차이 정리 (0) | 2025.10.31 |
|---|---|
| [Spring] 자주 사용하는 어노테이션 정리 및 예시 (0) | 2025.10.28 |
| [Spring] 순서 의존 AOP로 인해 파라미터 순서만 바꿔도 코드가 동작하지 않은 이유 (0) | 2025.10.21 |