[우아한테크코스] springboot와 spring의 차이

kimjingwon·2023년 6월 26일
0
post-custom-banner

스프링

스프링이란

다양한 스프링 프로젝트들의 모음이다.

다양한 스프링 프로젝트는 스프링프레임워크를 기반으로 사용한다.

스프링이 나온 이유

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

EJB의 목표:

비즈니스로직과 앤터프라이즈 기술의 분리를 통한

  • 비즈니스 로직 개발의 집중
  • 편리한 어플리케이션 개발이다.

하지만
단점 :

  • 비즈니스로직보다 EJB를 사용하기위한 코드가 많다
  • EJB에 너무 종속적이라 자바의 장점(객체지향)을 못살린다.

이 문제를 해결하기 위해 등장한 것이 스프링이다.

스프링의 장점

스프링의 장점은
비즈니스기술과 어플리케이션 기술의 분리를 통해

  • 비즈니스 로직 개발의 집중과
  • 편리한 어플리케이션 개발이다.

ejb의 문제점 해결

  • 초기설정만 해주면 java의 장점인 객체지향을 살려서 개발할 수 있다.

스프링의 단점

다양한 스프링 프로젝트들과 외부라이브러리인 오픈소스의 등장으로
스프링 생태계가 커졌다.

  • 스프링으로 개발을 시작할 때 직접설정해야 할 것들이 많아지고 복잡해졌다.
  • 초반 설정을 하느라 많은 시간을 소비하게 된다.

스프링부트

스프링 부트란

스프링부트를 사용하면 스프링기반의 어플리케이션을 쉽게 만들 수 있다.

스프링개발의 복잡한 설정과정을 스프링부트가 대신해준다.

스프링부트도 스프링의 프로젝트중 하나기 때문에 스프링프레임워크기반으로 작동한다.

스프링 부트가 나온 이유

  • 스프링으로 개발할때 직접 설정할것이 많아지고 복잡해졌다.
  • 초반설정에 시간을 많이 소비한다.

위와 같은 스프링의 문제점을 해결하기 위해 스프링부트가 등장했다.

스프링부트의 장점

1. 내장서버

기존 스프링 개발의 경우 웹배포과정

  • was설치
  • 어플리케이션코드 war로 빌드
  • war파일을 was폴더 하위에 넣는다.
  • was를 실행한다

위 과정은 복잡하고 귀찮다.

그래서 스프링부트는

  • 내장톰캣기능을 라이브러리로 제공하여
    main메서드를 실행하면 웹서버와 스프링을 동시에 실행할 수 있도록 한다.

2. 편리한 의존,버전관리

기존 스프링 의존,버전관리

  • 필요한 라이브러리를 각각 고른다.
  • 각 라이브러리의 버전을 고른다.
  • 라이브러리간 호환성을 고려해 버전을 변경한다.

위 과정은 번거롭고 귀찮다.

  1. 버전 자동관리
    스프링부트는
    io.spring.dependency-management
    를 사용하여 라이브러리의 버전을 자동으로 관리해준다.

  2. 기본라이브러리의 묶음제공
    각각 선택해야했던 라이브러리들의 묶음으로 라이브러리 제공
    ex) implementation 'org.springframework.boot:spring-boot-starter-web'

  3. 자동구성
    일반적으로 자주 사용되는 빈들을 자동으로 등록
    과정 :

@springBootApplication어노테이션 안에
자동구성을 활성화 시켜주는 @EnableAutoConfiguration이 있다.

@EnableAutoConfiguration안에는
@import(AutoconfigurationImportSelector.class)가 있다.

importSelector : 설정정보대상을 동적으로 선택 ->
autoconfigurationImportSelelctor : 자동 설정에 대한 동적 import실행

위 과정을 통해 해당 파일의 설정정보가 스프링컨테이너에 빈으로 자동 등록된다.

post-custom-banner

0개의 댓글