Sun's Blog

[10분 테코톡] Spring vs SpringBoot 본문

ETC

[10분 테코톡] Spring vs SpringBoot

버스는그만 2023. 7. 5. 21:30

Spring 생태계

  • 스프링이란 정확히는 스프링 프로젝트들의 모음

스프링 홈페이지에서 확인할 수 있으며 위의 이미지보다 훨씬 많은 프로젝트들이 있다.

스프링 프레임워크를 사용하면

  • 자바 기반의 어플리케이션을 만들 수 있다.
  • 개발자들은 비즈니스 로직에 집중할 수 있다.

스프링 이전에 EJB라는 프레임워크가 있었다.

  • 2000년대 초반 등장. 스프링 같은 프레임워크
  • 목적: 비즈니스 로직과 앤터프라이즈 기술의 분리 => 편리한 애플리케이션 개발
  • 취지, 이론 GOOD
  • 현실
    • 너무 비싸다
    • 비즈니스 로직보다 EJB를 사용하기 위한 코드가 너무 많다.
    • EJB에 너무 의존적이고 종속적인 개발 => 기존 JAVA의 장점 객체지향을 못 살림

Spring 등장

  • 이름이 Spring인 이유는 봄이 왔다는 뜻
  • 허나 점점 커져만 가는 생태계와 프레임워크의 기능들 그리고 다양한 오픈소스의 등장으로 외부 라이브러리들

스프링으로 개발을 시작할 때 직접해야 하는 설정이 너무 많아지고 복잡해졌다.

Spring Boot 등장

  • 스프링 부트를 사용하면 스프링 기반의 어플리케이션을 쉽게 만들 수 있다.
  • 스프링을 이용한 개발에 필요한 복잡한 설정은 Spring Boot가 해줘 즉시 어플리케이션 개발 즉시 시작 가능
  • Spring Boot 또한 Spring안에 존재하는 하위 프레임워크다.

내장 서버

스프링으로 웹 애플리케이션을 배포하려면

  1. WAS 설치
  2. 개발한 웹 애플리케이션 코드를 WAR로 빌드
  3. 빌드한 WAR 파일을 WAS 폴더 하위에 넣는다.
  4. WAS를 실행한다.

위와 같은 귀찮은 작업을 할 필요없이 톰캣을 라이브러리로 포함하는 내장 톰캣 기능 제공하며 war가 아닌 jar파일로 패키징할 수 있다,

편리한 의존성 & 권장 버전 관리

  1. 어떤 라이브러리들을 사용할지 고른다.
  2. 각 라이브러리의 버전도 고른다.

위와 같이 할 필요 없이 Spring Boot에서 io.spring.dependency-management를 통해 버전을 생략할 수 있다. spring-boot-starter를 통해 기본 라이브러리 묶음을 제공해서 깔끔하게 의존 파일을 구성할 수 있다.

자동구성

  • 일반적으로 자주 사용하는 수 많은 빈들을 자동으로 등록해주는 기능
  • spring-boot-autoconfigure 라는 모듈을 통해 수 많은 자동 구성을 제공한다.
  • @SpringBootApplication => @EnableAutoConfiguration을 보면 @Import(AutoConfigurationImportSelector.class)가 있다.
    • importSelector.class: 설정 정보 대상을 동적으로 선택
    • AutoConfigurationImportSelector: 자동 설정에 대한 동적 import 실행(모든 라이브러리를 확인해서 설정 정보 세팅)
    • 해당 파일의 설정 정보가 스프링 컨테이너에 자동으로 등록

후기

  • Spring Boot의 Health Check가 없어서 아쉽다.
  • 자동구성에서 factory 파일 읽는 부분이 궁금했는데 없어서 아쉽다.
  • 역시 Spring Boot가 편해서 좋기는 한데 결국 어떻게 구성되는지 알아야 하기 때문에 자동 구성 같은 경우는 독이 될 수 있다.

참고영상

[10분 테코톡 오잉의 Spring vs Spring Boot]: https://www.youtube.com/watch?v=YdE4krx0dsM

'ETC' 카테고리의 다른 글

Git 명령어  (0) 2023.07.07
Ubuntu Gitlab 설치  (0) 2023.07.07
[10분 테코톡] 전략 패턴  (0) 2023.07.01
[10분 테코톡] 단위테스트  (0) 2023.06.15
JWT  (1) 2023.05.15