Java

[Java] Spring의 탄생 배경

Castle Bird 2025. 12. 11. 15:45

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