본문 바로가기

Study/Spring

[스프링 5.0 마스터] 스프링 프레임워크란?

"스프링 프레임워크는 최신 자바-기반 엔터프라이즈 애플리케이션을 위한 포괄적인 프로그래밍 및 구성 모델을 제공한다"

- Spring Web Site


스프링 프레임워크란 무엇일까?

본 책은 스프링 프레임워크의 주요 목표가 애플리케이션의 여러 부분을 연결하는데 필요한 모든 기술을 제공하고 전담 처리하는 것이며 프로그래머는 이를 통해 비즈니스 로직 개발 업무에 집중 할 수있다고 기술하고있다.


스프링 프레임워크가 처음 출시되었을때는 EJB(Enterprise Java Beans)를 사용하여 엔터프라이즈 애플리케이션을 개발하는 것이 일반적이였다고 한다.

하지만 EJB를 통한 개발과 배포는 까다로웠으며 복잡한 API(Application Programming Interface)를 갖고있었다.


스프링 프레임워크는 EJB의 다음과 같은 문제점들을 해결하여 자바 EE 애플리케이션 개발을 단순화하기 위한 경량 프레임워크로써 개발되었다.

  • 단위 테스트의 어려움
  • 불필요한 메서드가 존재하는 인터페이스의 구현
  • 예외처리의 어려움
  • 배포 디스크립터(DD)의 불편함


스프링 프레임워크를 사용하는 이유

스프링 프레임워크의 큰 장점은 다음과 같다.

  • 단순화 된 단위 테스트
  • 복잡한 코드의 감소
  • 아키텍처의 유연성
  • 변화하는 시대를 선도


단순화 된 단위 테스트를 스프링 프레임워크는 의존성 주입 개념을 도입하여 해결하였다.

따라서 단위 테스트를 위해 전체 애플리케이션을 배포할 필요성이 사라졌다.

단위 테스트 간소화의 이점은 다음과 같다.

  • 프로그래머의 생산성 향상
  • 결함의 초기 발견으로 인한 수정 비용 감소
  • 애플리케이션에 지속적인 통합 빌드에서 실행 할 수 있는 자동화된 단위 테스트가 있어 향후 결함을 예방

스프링 JMS, 스프링 AOP 및 다른 스프링 모듈들은 복잡한 코드를 감소 시키는데 도움이 됨.

복잡한 코드를 감소시키는 것은 코드의 중복을 줄이는 것 외에 트랜잭션 관리, 예외 처리 등과 같은 모든 코드가 한곳에서 구현되므로 유지 관리가 더 쉬운 이점이 있음.


스프링 프레임워크는 핵심 스프링 모듈 위에 구축된 독립적인 모듈 세트이므로 아키텍처의 유연성을 가질 수 있다.

애플리케이션의 서로 다른 부분들 간의 간섭을 줄임으로써 아키텍처에 융통성을 가지게 됨.

  • 스프링 MVC 지원 (혹은 스트럿츠, 바딘, JSF 또는 원하는 웹 프레임워크 지원)
  • 스프링 빈즈는 비즈니스 로직을 위한 경량 구현체 제공. (그러나 스프링은 EJB와도 통합 가능)
  • 스프링은 JDBC 모듈을 사용하여 JDBC 단순화. (그러나 JPA, 하이버네이트 또는 아이바티스와 같은 데이터 레이어 프레임워크도 지원)
  • 스프링 AOP를 사용하여 횡단 관심(로깅, 트랜잭션 관리, 보안 등)을 구현 가능 (혹은 AspectJ와 같은 AOP의 구현과 통합 가능)


'Study > Spring' 카테고리의 다른 글

[스프링 5.0 마스터] 스프링 모듈  (0) 2019.02.15
[스프링 5.0 마스터] 개요  (0) 2019.02.08