Spring Framework는 2003년 로드 존슨(Rod Johnson)이 개발하였으며, 그의 저서 “Expert One-on-One J2EE Design and Development”에 기반하여 탄생했다. 이는 당시의 JAVA EE의 한계를 해결하고자 만들어졌다고 할 수 있다.
📍배경
- JAVA EE는 기업용 애플리케이션으로 사용되었지만 EJB(Enterprise JavaBeans)중심으로 구성되어 있어 개발 및 유지보수가 어려웠다.
- 간단한 비즈니스 로직을 작성하기 위해 필요 이상의 많은 코드가 필요했으며 객체 간 결합도가 높아 테스트에도 어려움이 있었다.
- EJB는 너무 무겁고 비효율적이라는 비판을 받았고 Rod Johnson은 이에 대안이 필요하다고 생각하여 Spring Framework를 고안하게 된다.
*EJB란?
Java EE의 핵심 기술 중 하나로 분산 환경에서 엔터프라이즈급 애플리케이션을 개발하기 위한 서버 측 컴포넌트 기술이다. 트랜잭션 처리, 보안, 동시성, 분산객체 관리 등의 복잡한 기능을 개발자가 직접 구현하지 않고도 사용할 수 있게 해주는 기술이었다.
*엔터프라이즈
단순히 회사 또는 기업을 뜻하는 것이 아니라, 특정한 규모와 목적을 가진 소프트웨어 개발 분야를 의미한다. 대기업, 공공기관, 금융, 병원, 제조사 등에서 복잡한 대규모 비즈니스 로직을 처리하기 위한 업무용 시스템을 개발하는 분야를 말한다.
📍 Spring의 특징
- POJO(Plain Old Java Object) 기반으로 개발이 가능하게 함
- DI(의존성 주입)으로 느슨한 결합 유도
- 테스트 용이
- XML, Java Config, Annotation 기반의 유연한 설정 제공
- AOP(Aspect-Oriented Programming)를 활용한 선언적 트랜잭션 관리
→ 경량, 유연성, 모듈성(원하는 구성만 사용 가능한 것), 생산성 향상
| 항목 | Spring Framework | Spring Boot |
| 설정 | 대부분 수동 설정(XML, Java Config 등) 필요 | 설정 자동화(자동 설정, 스타터 제공) |
| 복잡도 | 개발자가 세세하게 설정해야 해서 상대적으로 복잡함 | 최소한의 설정으로 빠르게 실행이 가능함 |
| 빌드 | 따로 WAS (예: Tomcat)를 설치해서 실행해야 함 | 내장 Tomcat/WAS 포함 -> 바로 실행 가능 |
| 의존성 관리 | 개별적으로 일일이 추가해야 함 | 스타터로 일괄 제공됨 |
| 주요한 목적 | 유연하고 확장성있는 엔터프라이즈 개발 | 빠른 개발, 초기 설정 최소화 |
| 실행 방법 | Main 메서드에서 실행이 어려움 | main()함수로 실행이 가능함 (@SpringBootApplication) |
- Spring은 기반 기술 그 자체이다. 유연하지만 설정이 많고 번거롭다.
- Spring Boot는 Spring을 쉽게 쓸 수 있도록 도와주는 툴킷이라고 이해하면 쉽다.
'Programming > Spring' 카테고리의 다른 글
| [Spring] Batch작업이란? (0) | 2025.11.19 |
|---|---|
| [Spring]@Cacheable, @CachePut, @CacheEvict (0) | 2025.10.20 |
| [Spring] JWT의 구조 (0) | 2025.10.01 |
| [Spring] JPA에서 N+1이 발생하는 이유 (0) | 2025.09.24 |