Spring - 등장배경과 특징

skyju·2022년 10월 18일

Spring

목록 보기
1/7

SpringFramework 등장배경

  • 웹사이트가 커지며 Enterprise급 서비스가 필요하게 되었다.
    그중에서도 자바 진영에서는 EJB가 Enterprise급 서비스로 각광받게 되었다.

EJB(Enterprise Java Bean)란?
기업환경의 시스템을 구현하기 위한 서버 측 component 모델, 일반적으로 업무 logic을 가지고 있는 server application을 칭한다.

  • EJB를 사용하면 application 작성을 쉽게 할 수 있다.
  • Low Level의 transaction이나 상태관리, 멀티 threading, resource pooling같은 복잡한 Low Level의 API를 이해하지 못하더라도 아무 문제 없이 application을 개발할 수 있다.
  • 이를 위해서는 EJB 스펙에 정의된 interface에 따라 코드를 작성해야하므로 기존에 작성된 POJO를 변경해야 한다는 단점이 있었다.

POJO (Plain Old java Object)란?

  • 특정 Framework나 기술에 의존적이지 않은 자바 객체 위주의 방식, 이러한 특징으로 인해 특정 기술에 종속적이지 않기 때문에 생산성과 이식성 향상이 특징이다.
  • Plain : component interface를 상속받지 않는 특징 (특정 Framework에 종속되지 않는)
  • Old : EJB 이전의 Java class를 의미
  • 또한 Container에 배포해야만 테스트가 가능하여 개발속도에 저하가 있었다. 또 배우기 어렵고 설정할 부분이 많았다. EJB는 무거운 Container 였다.

  • EJB를 사용하지않고 Enterprise application을 개발하는 방법이 생겨나기 시작했다 주로 POJO + 경량 Framework 방식이었다.

경량 프레임워크?

  • EJB가 제공하는 서비스를 지원해줄 수 있는 Framework 등장
  • Hibernate, JDO, iBatis(MyBatis), Spring ..

SpingFramework의 특징

  • 1. 경량컨테이너
    스프링은 자바객체를 담고 있는 Container로, 자바 객체의 생성과 소멸과 같은 lifecycle을 관리한다.
  • 2. DI(Dependency Injection - 의존성 주입) 패턴 지원
  • 3. AOP(Aspect Oriented Programming - 관점 지향 프로그래밍) 지원

    AOP?

    • AOP란 문제를 바라보는 관점을 기준으로 프로그래밍하는 기법을 뜻한다.
    • 문제 해결을 위한 핵심 사항과 전체에 통용되는 공통 사항을 기준으로 프로그래밍함으로써 공통 모듈을 여러 코드에 쉽게 적용할 수 있도록 해준다.
    • 스프링은 자체적으로 프록시 기반 AOP를 지원하므로 transaction, logging, 보안과 같이 여러 모듈에서 공통으로 필요로 하지만 핵심이 아닌 기능을 분리하여 각 모듈에 적용이 가능하다.
  • 4. POJO(Plain Old Java Object) 지원
  • 5. IoC(Inversion of Control - 제어의 반전)

    IoC?

    • 자바의 객체 생성 및 의존관계에 있어 모든 제어권은 개발자에게 있었다. Servlet과 EJB가 나타나면서 그 제어권이 넘어가게 되었다.
    • 스프링에서도 객체의 생성, 생명주기를 관리하는 기능을 제공하고 있는데 그런 이유로 IoC Container라고 부르기도 한다.
    • IoC의 구현 방법중 하나가 DI이다.
    • 객체 간의 강한 결합도를 Factory를 통해 낮춘다.
  • 6. 스프링은 트랜잭션 처리를 위한 일관된 방법 제공
  • 7. 스프링은 영속성과 관련된 다양한 API 지원
    JDBC를 비롯하여 MyBatis, Hibernate, JPA등 DB처리를 위해 널리 사용되는 라이브러리와 연동 지원

ORM(Object Relational Mapping)

profile
https://github.com/skyju

0개의 댓글