Study/Spring

[Spring Framework] 스프링의 등장

AC 2019. 8. 3. 21:11

 

1990년대 말, 자바의 엔터프라이즈 에디션인 J2EE는 버전업을 거듭할 때마다 JSP, Servlet, EJB의 기능도 많아지고 새로운 표준도 추가되엇따. 이렇게 시간이 지날수록 J2EE는 무거워지고 복잡해졌다. 그래서 웹 애플리케이션 개발에는 더 가벼운 것을 이용하고 싶은데 J2EE는 너무 무겁다고 생각하는 사람이 많아졌다.

스프링 개발을 이끌어온 로드 존슨도 그중 한 사람이었다. 중량급인 J2EE 컨테이너를 대신할 경량 컨테이너로서 DI와 AOP의 기능을 가진 DI x AOP 컨테이너인 스프링을 고안해낸 것이다.

DI x AOP 컨테이너는 POJO(Plain Old Java Object)라고 부르는, 컨테이너와 프레임워크 등에 의존하지 않는 일반 오브젝트의 생명 주기 관리나 오브젝트 간의 의존 관계를 해결하는 아키텍처를 구현한 컨테이너를 말한다. 스프링으로 대표되는 고성능 DI x AOP 컨테이너는 EJB의 장점인선언적 트랜잭션 관리를 POJO로 구현할 수 있다.

데이터베이스 접근은 다양한 O/R 매핑 프레임워크(ORM)를 이용한다.

EJB 컨테이너(EJB 3이전 버전) 대신 DIxAOP 컨테이너를 이용하는 가장 큰 이유는 DIxAOP 컨테이너에 실을 수 있는 오브젝트가 POJO라고 부르는 일반 자바 오브젝트이기 때문이다. EJB 컨테이너에 의존하는 EJB 컨테이너는 단위 테스트를 수행하기 어렵다는 문제점이 있지만, DIxAOP 컨테이너로 관리되는 POJO는 DI 컨테이너에 의존하지 않는다는 특징 덕분에 단위테스트를 쉽게 수행할 수 있다.

하지만... 스프링을 기본 개발 환경으로 여기는 만큼 다양한 기능과 제품이 생겨낫고 점점 비대해져, 오늘날에는 아무도 스프링을 경량 컨테이너라고 부르지 않게 되었다.

LIST