반응형

 자바로 백엔드 개발을 하기 위해서는 스프링 프레임워크가 거의 필수라고 볼 수 있다. 

자바로 개발을 해보았다고 해도 스프링의 진입장벽은 높기 때문에 이러한 진입장벽을 그나마 낮춰주는 스프링부트가 존재한다.

(.. 그래서 스프링을 처음 공부하기 위해 스프링부트부터 선택하였다. 스프링 공부 서적으로 유명한 토비의 스프링 책만 보아도 스프링은 Top-down 으로 가야 할것 같다. )

 

 

 

스프링 프레임워크 란


 스프링부트를 알기 위해서는 스프링 프레임워크부터 알아야한다. 

스프링 프레임워크(이하 스프링)는 자바 기반 엔터프라이즈 애플리케이션 개발을 위한 포괄적인 인프라를 제공해주는 플랫폼이다. 

스프링은 오픈소스 기반이며 쉽게 설명하면 엔터프라이즈 애플리케이션 개발을 편리하게 해주는 도구라고 생각하면 된다.

라이센스는 아파치 2.0 이다. ( .. 이게 스프링이 필수인 주요한 이유가 아닌가 싶다. )

 

엔터프라이즈 애플리케이션 이란
엔터프라이즈 애플리케이션은 이름 그대로 기업형 프로그램으로 자바에서는 JavaEE (Java Enterprise Edition)을 통해 개발되었다.
JaveEE 는 JavaSE(Java Standard Edition)에 서버측 개발을 위한 기능이 더해진 자바 버전이라고 보면 된다.
스프링은 이런 JaveEE를 대체하기 위해 개발되었기 때문에 엔터프라이즈 애플리케이션 개발을 위한 플랫폼이라고 설명한다.

 

 

 

스프링의 역사


스프링은 2002년 로드 존슨이 최초로 개발하였다.

왜?

자바로 엔터프라이즈 애플리케이션을 개발하기 위해서 JavaEE가 사용되었는데 JavaEE에서 핵심적인 역할을 하는 것이 EJB 이다.

EJB는 엔터프라이즈 애플리케이션을 쉽게 작성할 수 있도록하는 목표를 가지고 있었지만 개발자들에게 EJB는 생각 보다 쉽지 않았다.

예를들어 소스코드 측면에서 EJB 관련 클래스를 반드시 사용해야 한다거나, 개발환경 측면에서 EJB 컨테이너를 사용해야 한다는 제약은 개발 생산성과 유지 보수성 저하와 테스트와 배포의 어려움을 가져왔다. 

이러한 문제점들을 해결하고 엔터프라이즈 애플리케이션 개발을 쉽게 하기 위해 스프링이 탄생하였다.

 

EJB(Enterprise Java Beans) 란
EJB는 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델

 

스프링은 2004년 1.0 버전 출시 이후 계속 버전이 업데이트 되면서 2019년(현재 기준) 5.1 버전대 까지 등장하였다.

 

 

 

스프링의 특징


스프링의 특징은 하나하나 중요한 개념이고 가볍지 않은 내용이라 해당 특징들은 차차 공부하면서 알아가는게 좋을 것 같다. ( ..처음부터 이해도 되지 않을 뿐더러 지친다. )

처음엔 대략적으로 이런것들이 있구나만 알고 넘어가자.

 

스프링 구조

 

 

핵심 기술 

  • POJO (Plain Old Java Object)

  • DI (Dependency Injection)

  • IoC (Inversion of Control)

  • AOP (Aspect Oriented Programming)

  • PSA (Potable Service Abstraction)

 

 

테스팅

  • mock objects

  • TestContext framework

  • Spring MVC Test

  • WebTestClient

 

 

통합

  • remoting

  • JMS

  • JCA

  • JMX

  • email

  • tasks

  • scheduling

  • cache

 

 

데이터 엑세스

  • transactions

  • DAO support

  • JDBC

  • ORM

  • Marshaling XML

 

 

스프링MVC 와 스프링WebFlux

 

 

언어 (자바 이외 지원 언어)

  • Kotlin

  • Groovy

  • dynamic language 

 

 

 

스프링부트 란


 스프링부트를 알기위해 돌고 돌아 스프링부터 간략하게 살펴보았는데 드디어 스프링부트란 무엇인가 말할 수 있다!  스프링부트는 실행만 하면 스프링 기반의 상용화가 가능한  애플리케이션을 쉽게 만들기 위해 단독 실행을 가능하게 해주는 스프링 프로젝트이다.

즉, 스프링부트는 스프링을 쉽게 사용할 수 있도록 필요한 설정을 대부분 미리 세팅 해놓았다는 뜻이다.

스프링부트는 2019년(현재 기준) 2.1.7 버전 까지 나와있다.

 

 

 

스프링부트의 특징


  • 단독으로 실행이 가능한 스프링 애플리케이션을 생성함

  • Tomcat, Jetty, Undertow 를 내장

  • 기본설정이 되어있는 starter 컴포넌트를 제공

  • 가능한 자동으로 설정되어 있음

  • 상용화에 필요한 통계, 상태 체크, 외부 설정 등을 제공

  • 설정을 위한 XML 코드를 생성하거나 요구하지 않음

 

 

 

 

 

 

* 해당 포스팅은 https://spring.io/ 을 기준으로 하고 있습니다.

 

 

반응형

+ Recent posts