Spring을 사용하는 이유?

bp.chys·2020년 4월 20일
0

Spring Framework

목록 보기
1/15
post-thumbnail

스프링 프레임워크

  • 스프링 프레임워크는 이전에 EJB(Enterprise Java Beans)를 사용하여 개발하는 것이 일반적이었다.
  • EJB는 개발, 배포, 예외처리, 단위 테스트 등이 쉽지 않은 문제를 안고 있었다.
  • 스프링 프레임워크는 DI를 통해 단위 테스트를 가능하게 하고, AOP를 통해 복잡한 코드를 감소시킨다.
  • 이는 개발자의 생산성을 향상시키고, 유지보수 비용을 감소시키는 효과를 준다.

프레임워크 vs 라이브러리

  • 프레임워크 : 애플리케이션 개발 시 필수적인 기반 코드를 제공해주는 것으로 제어권이 프레임워크에 있기 때문에 개발자는 프레임워크의 API를 사용하면 클래스를 직접 제어하지 않아도된다. 이를 IoC(제어의 역전)라고 부른다.
  • 라이브러리 : 특정 기능에 대한 도구나 함수들의 집합으로 개발자가 직접 라이브러리 안에 있는 도구나, 함수들을 사용하는데 그 의의가 있다.

스프링 모듈

  • 스프링은 20개 이상의 다른 모듈을 갖고 있는 고도화된 모듈이다.
  • 스프링의 대표적인 모듈으르 레이어 별로 나누면 다음과 같다.
  • Core, AOP, Web, Data Acess, Test

스프링 프로젝트

  • 스프링 프레임워크는 기본적으로 DI, Web, Data 기능의 기반을 제공한다.
  • 이 외 다른 스프링 프로젝트는 배포, 클라우드, 빅데이터, 배치 및 시큐리티와 같은 다른 문제에 대한 솔루션을 제공하기도한다.
  • 대표적으로 스프링 부트, 스프링 클라우드, 스프링 데이터, 스프링 배치, 스프링 시큐리티, 스프링 HATEOAS

리액티브 프로그래밍

  • 스프링 프레임워크 5.0 부터는 새롭게 리액티브 프로그래밍을 지원한다.
  • MSA는 일반적으로 이벤트-기반 통신을 기반으로 구축되고, 애플리케이션은 이벤트에 반응하도록 작성된다.
  • 자바8에는 리액티브 프로그래밍을 위한 기능이 없지만, 리액티브 스트림, 리액터, 스프링 웹 플럭스와 같은 리액티브 프로그래밍을 지원하는 다양한 프레임워크가 있다.

스프링 핵심 삼각형

  • 스프링의 핵심 기능 세가지인 IoC, AOP, PSA를 스프링 삼각형이라고 부른다.
  • IoC(DI)는 의존성 주입 기능을 의미한다. 객체 관계를 스프링이 직접 주입해주기 때문에 객체간 결합도(의존도)를 낮출 수 있다.
  • AOP(Aspect Oriented Programming)는 비즈니스 로직과 관계가 적은 트랜잭션, 로깅, 예외처리 등의 횡단관심으로 모듈화하여 처리할 수 있는 프로그래밍 방법이다.
  • PSA(Portable Service Abstraction)는 한마디로 실제 사용하는 기술에 관계없이 일관된 기술 접근 환경을 제공하도록 서비스의 추상화 계층을 제공하는 것을 말한다. 대표적으로 Spring Trasaction Manager, Spring Cache Manager가 있다.
  • 스프링은 기본적으로 모든 기능을 POJO(Plain Old Java Object)로 작성할 수 있다는 특징이 있다.

결론

스프링은 과거 EJB 환경에서 겪었던 여러 개발 환경의 어려움을 극복하기 위해 탄생한 프레임워크이다. 내부적으로 레이어별로 구분되는 여러 모듈을 제공하고 있고, 핵심 기술로 DI, AOP, PSA가 있다.

최근 스프링 5.0 으로 업데이트 되면서 가장 큰 변화는 이벤트 통신 기반의 리액티브 프로그래밍이 가능해졌다는 것이다. 필자 역시 리액티브 프로그래밍에 큰 관심을 가지고 있다. 차차 정리하면서 공부해보겠다.

profile
하루에 한걸음씩, 꾸준히

0개의 댓글