Spring Framework

심민혁·2025년 3월 16일

weeklypaper

목록 보기
4/18

> 2025.03.10일자 위클리페이퍼

Spring Framework가 탄생하게 된 배경과 이를 통해 해결하고자 했던 문제점에 대해 설명하세요.

1. 탄생 배경

  • Spring Framework는 2002년 로드 존슨(Rod Johnson)이 발표한 "Expert One-on-One J2EE Design and Development" 책에서 처음 개념이 소개되었으며, 이후 2003년에 오픈소스로 공개되었습니다.

  • 당시 기업용 애플리케이션 개발에서는 Java EE (J2EE, 현재 Jakarta EE)를 주로 사용했지만, 복잡성과 무거운 구조로 인해 개발자들이 많은 어려움을 겪었습니다. Spring은 이러한 Java EE의 한계를 극복하기 위해 만들어졌습니다.

2. 문제점

2.1 애플리케이션의 복잡성

  • 과거 J2EE는 기업용 애플리케이션을 개발할 때 사용되었으며, EJB를 핵심 기술로 활용했습니다. 하지만 이 구조가 애플리케이션을 무겁게 만들었습니다.

  • EJB 컴포넌트는 전용 EJB 컨테이너에서 실행되어야 했습니다.

  • 이를 위해 JNDI Lookup, Remote Interface, Home Interface등을 설정해야 했고, 이는 많은 리소스를 소모했습니다.

  • J2EE 기반 애플리케이션은 XML 기반의 설정이 많아서 애플리케이션이 초기화될 때 많은 리소스를 소모했습니다.

  • 애플리케이션을 실행할 때마다 방대한 설정 파일을 로드해야 했고, 이는 실행 속도를 느리게 했습니다.

  • EJB없이 POJO 기반으로 개발을 가능하게 만들어 애플리케이션을 가볍게 만들었습니다.

2.2 의존성 관리의 어려움

  • 기존 JAVA 애플리케이션에서는 객체 간의 의존성을 직접 관리해야 했습니다.
  • 의존성 주입 개념이 없었기 때문에 개발자가 직접 new 키워드를 사용하여 객체를 생성하고 관리해야 했습니다.
    Spring은 *IoC와 **DI를 도입하여 객체의 생성과 의존성 관리를 컨테이너가 자동으로 처리하도록 했습니다.

*IoC (제어의 역전) : 제어의 역전 패턴은 프로그램 제어의 흐름을 개발자가 아닌 Spring Container가 담당하도록 하는 방식입니다.

**DI (의존성 주입) : IoC의 개념을 실현하는 방법 중 하나로, 객체가 필요한 의존성을 직접 생성하지 않고 외부에서 주입받도록 하는 방식입니다.

2.3 중복된 코드

  • J2EE에서는 트랜잭션, 로깅, 보안과 같은 공통된 기능을 여러 클래스에서 중복으로 작성해야 했습니다.
  • Spring은 AOP을 도입하여 이러한 공통 기능을 분리하고, 코드의 재사용성과 유지보수성을 높였습니다.

2.4 무거운 트랜잭션 처리 방식

  • 기존 J2EE 환경에서는 트랜잭션 처리를 위해 JTA를 사용해야 했고, 이는 복잡한 설정을 요구했습니다.
  • Spring은 트랜잭션을 선언적으로 관리 할 수 있도록 하여 코드의 복잡성을 줄였습니다.

2.5 테스트의 어려움

  • EJB기반의 애플리 케이션은 컨테이너 환경에서 실행되어야 했기 때문에 단위 테스트가 어려웠습니다.
  • Spring은 POJO를 기반으로 개발이 가능하도록 설계하여, JUnit등의 테스트 도구를 활용한 단위 테스트가 용이하도록 했습니다.
profile
열심히 하고 싶습니다

0개의 댓글