Spring

Spring과 Spring Boot의 차이점은?

hihikiki 2023. 7. 19. 21:09

이번 글에서는 Spring과 Spring Boot 에 대해서 알아보고 차이점에는 어떤 것들이 있는지 알아보고자 합니다.

1. Spring

- Spring은 어플리케이션 개발을 위한 포괄적인 프레임워크 입니다.

스프링 프레임워크는 제어역전(IoC), 의존성주입(DI), 애드팩트 지향 프로그래밍(AOP) 등 다양한 기능을 가지고 있습니다.

- 스프링은 여러 모듈로 구성되어 있으며, 각 모듈은 특정 기능을 담당합니다.

ex) Spring MVC(웹 어플리케이션 개발을 위한 모듈), Spring ORM(데이터베이스 접근을 위한 모듈)

- 스프링은 설정 파일(XML 또는 Java Config)을 사용하여 어플리케이션을 구성하고, 따라서 설정에 대한 세세한 제어가 가능합니다.

 

2. Spring Boot

- Spring Boot를 서버라고 생각하는 사람들도 있는데 스프링 부트는 스프링을 더욱 쉽게 사용하기 위한 도구입니다.

- 스프링 어플리케이션의 초기 설정과 환경 구성을 간편하게 하기 위한 목적!

- Spring Boot의 특징은 Auto Configuration, 내장 서버, 편리한 dependency 관리가 있습니다.

1)  Auto Configuration

 - Spring Boot 는 web, h2, jdbc 등 다양한 라이브러리에 대한 자동설정을 제공합니다.

- 새로 추가된 라이브러리(jar)는 스프링 부트의 자동설정 의존성에 따라 설정이 자동 적용됩니다.

→ Spring Boot는 어떻게 자동 설정을 하는 것일까? 원리가 뭘까? 한다면...

   스프링 부트는 클래스 패스를 스캔해 프로젝트에 포함된 라이브러리와 설정 정보를 분석합니다.
   자동 구성은 미리 정의된 조건들과 클래스패스를 기반으로 동작합니다.

 

2) 내장 서버

 - Spring Boot를 사용하지 않을 때는 Tomcat을 따로 설정하고 띄워줘야 했습니다.

  Spring Boot는 내장 서버가 있어 따로 서버를 띄울 필요가 없습니다. 내장 서버 종류로는 Tomcat, Jetty, Undertow를 쓸 수 있고, 기본은 Tomcat입니다. 물론 설정을 변경하여 다른 종류로 변경 가능합니다.

 

포트와 컨텍스트 패스 변경

스프링 부트의 내장 서버는 default로 8080 포트를 쓰고, context path는 /를 사용합니다.

포트와 컨텍스트 패스를 변경하고 싶다면 src/main/resources 디렉토리 아래 application.properties나 application.yml 파일에서 설정을 변경할 수 있습니다.

server:
  port: 8081
  context-path: /api

 

 3) 편리한 dependency 관리

 - 프로젝트에서 사용할 라이브러리와 버전을 설정하지 않아도 spring boot가 쉽게 의존성 관리를 도와줍니다.

spring boot를 안 쓸 때는 pom.xml에 라이브러리를 추가하고 version을 명시했습니다.

근데 종종 A 라이브러리 버전과 B라이브러리 버전이 내부에서 사용하는 라이브러리가 같은데 버전이 충돌나 에러가 나는 경우들이 있습니다.

Spring Boot를 쓰면 버전을 명시할 필요가 없이 알아서 버전관리를 해줍니다.

 

'Spring' 카테고리의 다른 글

Lombok 이란?  (0) 2023.07.19