1. EJB
Spring Framework가 나오기 전, Java진영에선 EJB(Enterprise JavaBeans)개발 환경으로 개발하였다.
1-1. EJB 등장 배경
1990년대 말, Java가 기업용 서버 애플리케이션 개발에 널리 사용되기 시작하면서, 다음과 같은 요구사항이 증가하였다.
- C++로 구현된 복잡한 분산 시스템 기술들을 대체하고 싶다.
- 트랜잭션 처리를 일관되게 관리하고 싶다.
- 분산 시스템 간의 통신을 쉽게 처리하고 싶다.
- 인증 및 권한 제어를 코드 외부에서 처리하고 싶다.
- 재사용 가능하고 확장 가능한 비즈니스 컴포넌트가 필요하다.
1-2. EJB 장점
- 기능의 표준화 : 트랜잭션, 보안, 분산 처리 등을 자바 표준으로 일관되게 제공
- 컨테이너 관리의 이점 : 스레드 관리, 자원 할당 등을 직접 처리하지 않아도 됨
- 컴포넌트 기반 재사용 : 모듈 단위 개발과 배포가 가능하며, 재사용성이 높음
- 대형 시스템에 적합 : 복잡하고 고가용성이 요구되는 시스템에 강력한 기반 제공
📝: 등장 배경에 어울리는 장점들인 것 같다.
1-2. EJB 단점
- 높은 진입 장벽 : 개념 자체가 복잡하며, 개발을 위해 익혀야 할 요소가 많음
- 과도한 설정 : XML(eXtensible Markup Language) 기반 설정이 방대하고, 실수에 취약함
- 개발 생산성 저하 : 단순한 로직도 다수의 구성 요소(인터페이스, 클래스)를 작성해야 함
- 테스트 어려움 : POJO가 아닌 구조로 인해 독립 실행 및 단위 테스트가 어려움
- 환경 종속성 : 특정 WAS(Web Application Server)와 EJB 컨테이너에 강하게 결합됨
2. Spring Framework
Spring의 창시자인 로드 존슨(Rod Johnson)은 2002년, 자신의 저서 ‘Expert One-on-One J2EE Design and Development’ 를 통해 Java EE의 구조적 한계를 신랄하게 비판했다.
로드 존슨은 책으로 다음과 같은 방향을 제시하였다.
- POJO 기반 개발 : EJB와 달리, 컨테이너에 종속되지 않는 순수한 자바 객체 사용
- IoC(Inversion of Control) : 객체의 생성과 의존성 주입을 개발자가 아닌 컨테이너가 담당
- AOP(Aspect-Oriented Programming) : 공통 관심사를 비즈니스 로직과 분리
- 경량 컨테이너: 전체 WAS 없이도 단독 실행 가능한 구조

이와 같은 의견은 많은 개발자들의 지지를 받으며 Spring Framework가 탄생하였다.
'Java' 카테고리의 다른 글
| [Java] String, StringBuffer, StringBuilder (0) | 2025.12.12 |
|---|---|
| [Java] Framework, Library (0) | 2025.12.11 |
| [Java] HashSet (0) | 2025.12.07 |
| [Java] Stream - map과 flatMap (0) | 2025.11.26 |
| [Java] 단일 책임 원칙(SRP)과 개방-폐쇄 원칙(OCP) (0) | 2025.11.25 |