Spring Framework가 탄생하게 된 배경과 이를 통해 해결하고자 했던 문제점에 대해 설명하세요.
Spring Framework는 2002년 로드 존슨(Rod Johnson)이 발표한 "Expert One-on-One J2EE Design and Development" 책에서 처음 개념이 소개되었으며, 이후 2003년에 오픈소스로 공개되었습니다.
당시 기업용 애플리케이션 개발에서는 Java EE (J2EE, 현재 Jakarta EE)를 주로 사용했지만, 복잡성과 무거운 구조로 인해 개발자들이 많은 어려움을 겪었습니다. Spring은 이러한 Java EE의 한계를 극복하기 위해 만들어졌습니다.
과거 J2EE는 기업용 애플리케이션을 개발할 때 사용되었으며, EJB를 핵심 기술로 활용했습니다. 하지만 이 구조가 애플리케이션을 무겁게 만들었습니다.
EJB 컴포넌트는 전용 EJB 컨테이너에서 실행되어야 했습니다.
이를 위해 JNDI Lookup, Remote Interface, Home Interface등을 설정해야 했고, 이는 많은 리소스를 소모했습니다.
J2EE 기반 애플리케이션은 XML 기반의 설정이 많아서 애플리케이션이 초기화될 때 많은 리소스를 소모했습니다.
애플리케이션을 실행할 때마다 방대한 설정 파일을 로드해야 했고, 이는 실행 속도를 느리게 했습니다.
EJB없이 POJO 기반으로 개발을 가능하게 만들어 애플리케이션을 가볍게 만들었습니다.
*IoC (제어의 역전) : 제어의 역전 패턴은 프로그램 제어의 흐름을 개발자가 아닌 Spring Container가 담당하도록 하는 방식입니다.
**DI (의존성 주입) : IoC의 개념을 실현하는 방법 중 하나로, 객체가 필요한 의존성을 직접 생성하지 않고 외부에서 주입받도록 하는 방식입니다.