본문 바로가기
Spring

개요

by J._.cobb 2022. 4. 14.

알아두자!!


프레임워크

  • 컴퓨터 프로그래밍에서, 소프트웨어 프레임워크는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조
  • 간단히 뼈대, 골조, 프레임워크라고도 한다.

EJB

  • 스프링 프레임워크를 사용하기 이전에 쓰던 프레임워크
  • EJB(Enterprise Java Bean)는 기업환경의 시스템을 구현하기 위한 서버 측 컴포넌트 모델
  • 어플리케이션의 업무 로직을 가지고 있는 서버 어플리케이션
  • 무겁고 복잡함
  • EJB의 불편함을 통해 대표적으로 2가지의 Open Source가 등장하게 됨
    1. 로드 존슨의 J2EE Design and Development의 예제 코드들이 지금의 Spring 기본 코드가 됨.
      • EJB 컨테이너의 대체
    2. 개빈 킹의 하이버네이트 ORM(Object Relation Mapping) 프레임워크의 등장
      • EJB 엔티티 빈 기술을 대체하고, JPA(Java Persistence API)의 새로운 표준 정의
      • JPA는 표준 인터페이스, 하이버네이트는 JPA의 구현체

POJO

  • Plain Old Java Object
  • 마틴 파울러가 EJB에 반발해 오래된 방식의 **"간단한 자바 오브젝트로 돌아가자"**는 말을 했고, 이는 POJO라는 용어의 기원이 되었음
  • 오래된 방식의 간단한 자바 오브젝트라는 말로서 Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것에 반발해서 사용되게 된 용어이다.

스프링

  • 스프링 프레임워크
  • 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크
  • POJO 방식
  • 스프링 프레임워크를 사용하기 이전에는 EJB를 사용
  • EJB의 무겁고 복잡한 특성으로 인해 스프링이 등장하게 됨
  • 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가벼움
  • 스프링 프레임워크, 스프링 부트와 함께 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 RestDocs, 스프링 배치, 스프링 클라우드 등과 함께 사용됨

 

스프링 역사

  • 2002년 로드 존슨 책 출간
  • EJB의 문제점 지적
  • EJB 없이도 충분히 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 보여주고, 30,000 라인 이상의 기반 기술을 예제 코드로 선보임
  • 여기에 지금의 스프링 핵심 개념과 기반 코드가 들어가 있음
  • BeanFactory, ApplicationContext, POJO, 제어의 역전(IoC), 의존관계(DI) 주입
  • 책이 유명해지고, 개발자들이 책의 예제 코드를 프로젝트에 사용
  • 책 출간 직후 Juergen Hoeller(유겐 휠러), Yann Caroff(얀 카로프)가 로드 존슨에게 오픈소스 프로젝트를 제안
  • 스프링의 핵심 코드의 상당수는 유겐 휠러가 지금도 개발
  • 스프링 이름은 전통적인 J2EE(EJB)라는 겨울을 넘어 새로운 시작이라는 뜻으로 지음

 

스프링과 스프링 부트

스프링 프레임워크의 핵심 개념은 DI 컨테이너, AOP 등이며, 스프링 MVC와 같은 웹 기술을 제공하고 JDBC, ORM 프레임워크의 지원, Mybatis와 같은 XML 기반 데이터 접근 기술을 지원한다. 또한, 스프링 기반 테스트를 지원한다.

스프링 프레임워크의 장기간에 걸친 환경설정과 어려움을 해결하기 위해 스프링 부트가 등장했다.

  • 스프링 부트의 장점
    1. Tomcat 같은 웹 서버를 내장함으로써 스프링 프레임워크와 달리 웹 서버를 설치하지 않아도 됨
    2. 단독으로 실행하도록 스프링 애플리케이션을 쉽게 생성해줌
    3. 간단한 빌드 구성을 위한 starter 종속성 제공
      • Starter가 프로젝트를 구성하는 필요한 라이브러리를 자동으로 구성함으로써 편의성을 증대시킴
    4. 스프링과 써드 파티 라이브러리의 자동 구성
      • 스프링 프레임워크의 버전을 확인하고 해당 버전과 호환성이 좋은 외부 라이브러리를 자동으로 구성하므로 개발자가 다양한 라이브러리의 버전을 확인할 필요성을 없앰

 

핵심

  • 스프링은 Java 언어 기반의 프레임 워크이다. 그렇다면 Java의 가장 큰 특징은?
  • Java는 객체 지향 언어이고, 스프링 프레임워크는 객체 지향 언어의 강력한 특징을 살려줄 수 있는 프레임워크이다.
  • 즉, 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크라는 것