Spring VS Spring Boot (스프링 부트를 사용하는 이유)

민이의 기술 노트 ·2023년 8월 21일
1

Spring

목록 보기
1/1
post-thumbnail

안녕하세요. 민 입니다 저번시간까지는 Spring은 무엇이고 왜 사용하는지 페이징 기법의 적용법등을 배워보았습니다. 이제는 Spring Boot를 사용하는 이유와 Spring과의 차이점에 대해서 설명해드리겠습니다 !

목차

1. Spring VS Spring Boot


2. Spring Boot의 장점

3. 정리

💁‍♂️ 1. Spring VS Spring Boot

하지만 스프링이 왜 생기게 된 것인지에 대한 설명은 하지않았죠 😤

1-1 스프링 프레임워크의 탄생과정

스프링은 Java 기반 애플리케이션 개발을 지원하는 오픈소스 애플리케이션 프레임워크 입니다.

하지만 이렇게 탄생하게 된 과정이 있습니다.
스프링 이전에는 EJB(현재의 스프링에 비하면 매우 불편한 방식)을 사용하였는데 스프링에 비하면 너무 복잡하고 자동화 테스트가 불가능하였습니다.

스프링은 이러한 단점을 극복하였고 순수 자바 객체(POJO)만을 사용하여 복잡성을 제거하고, 단순하고 가벼운 코드로 기업용 애플리케이션을 개발하기 위한 목적으로 개발된 프레임워크(Framework) 입니다 .

1-2 스프링의 장점과 단점

스프링의 특징은 여기 정리되어있는 링크로 가시면 잘 나와있습니다 .

스프링의 개념정리 블로그 -->-> 스프링이란 무엇인지 확인하러가기 !

하지만 스프링의 장점과 특징에 대해서 만 말씀드렸지
Spring의 문제점에 대해서는 설명을 드리지 못했는데요 .

SPring의 문제점


1.복잡한 초기설정 :
스프링은 많은 기능이 있는 반면에 그에 따른 많은 설정이 필요합니다 초기 설정이 매우 복잡하고 설정에 매우 많은 코드를 기술해야 합니다 .


2.버전관리 :
의존성 주입을 하는게 스프링의 장점인 것과 동시에 의존성을 주입한 라이브러리의 버전관리를 수시로 해줘야하는게 스프링의 단점이라고 할 수 있습니다
코드의 가독성과 많은 bean 파일등록으로 인한 의존성 관리가 불편함


3.별도의 was 설치 :
별도의 was 를 설치하고 설정해야합니다 .
저희가 자주 사용하는 tomcat있죠 ?? 그걸 스프링은 내부에서 설정해줘야하는 번거로움이 또 존재하는 것이죠

스프링 부트(Spring Boot)는 스프링의 문제점을 해결해 주기 위해 개발된 스프링의 프레임워크로 개발자들이 더 쉽고 빠르게 스프링 애플리케이션을 개발하도록 도와주기 위해 개발되었습니다. 

스프링 부트는 기본적인 설정과 보일러 플레이트 코드(여러 곳에서 재사용되는 코드) 작성을 최소화하고, 자동 설정과 컨벤션을 통해 개발자들이 빠르게 애플리케이션을 개발할 수 있도록 지원하는 스프링 프레임워크입니다. 

스프링 부트는 번거로운 xml 설정이 필요없고요
기본적인 설정을 초기에 자동으로 설정하여서 별도의 작업이 필요하지않습니다.

그럼 이에 반해서 Spring Boot의 장점은 무엇인지 확인하러 가시죠 !

💁‍♂️ 2. Spring Boot

간단하게 미리 설명을 드리면

스프링 부트(Spring Boot)란 ?
.
1. 스프링 기반 어플리케이션을 더 빠르고 쉽게 개발할 수 있게 해주는 오픈소스 프로젝트
2. 스프링보다 간단한 설정으로 쉽게 웹 애플리케이션 제작가능

-> 스프링부트는 스프링을 쉽게 사용할 수 있도록 대부분을 설정을 미리 세팅해두어서 사용하기가 간편하다 .

2-1 Spring Boot의 장점

내장 서버
스프링 부트는 내장된 서버(내장 Tomcat, Jetty, Undertow)를 제공하여 별도의 서버 설정 없이 애플리케이션을 실행할 수 있습니다. 배포를 위해 War 파일을 생성해서 Tomcat에 배포할 필요 없으며, JAR 파일에는 모든 의존성 라이브러리가 포함되어 있어 외부 서버 없이도 애플리케이션을 실행할 수 있습니다. 이는 애플리케이션의 배포와 관리를 간편하게 만들어 줍니다.

아까 말씀드렸듯이 was 처럼 별도의 서버가 필요한게 아니라
springboot내부에서 내장서버를 소유
하고 있기때문에 별도의 설정없이 스프링부트를 사용할 수 있습니다 .

  • 의존성 관리 간소화
    스프링 부트는 여러 3rd party 라이브러리를 사용하여
    starter라는 묶음 의존성 라이브러리 패키지를 이용하여
    Maven/gradle에서 버전 관리를 하여 별도의 버전관리가 필요없고 간편하게 의존성을 지정할 수 있습니다 .
  • 운영 편의성
    스프링 부트는 애플리케이션의 상태 모니터링, 로깅, 보안 설정 등 운영에 필요한 기능들을 제공합니다. 이를 통해 애플리케이션의 운영과 관리가 편리해지고 안정성이 향상됩니다.

스프링 부트는 스프링(Spring Legacy)의 장점은 그대로 계승하면서, 기존의 문제가 되는 부분을 보완하여 기업용 애플리케이션의 개발 생산성 및 서비스 운영, 성능을 모두 해결해 줄 수 있습니다. 

이렇듯 스프링 부트는 개발자들의 개발 생산성을 높이고, 애플리케이션의 유연성, 확장성을 제공할 뿐만 아니라, 스프링 프레임 워크들과 강력하게 호환되고, 생태계와의 통합을 가능하게 합니다.

💁‍♂️ 3. 정리

1.스프링은 기존의 EJB의 문제점을 극복하기 위해서 등장한 프레임워크이다.

2.스프링부트는 스프링의 문제점(의존성, 버전, 별도의서버, 초기설정)등의 문제를 해결하기 위해서 등장한 프레임워크이다.

3.스프링부트를 이용하면 간단한 설정으로(thymeleaf,starter패키지,yml,gradle설정,JPA) 개발의 생산성을 높여주며, 서비스, 유지보수의 편의성을 높여준다. .

profile
항상 성장하고 있는 개발자입니다!

0개의 댓글