[Spring] Spring Framework vs Spring boot

한호성·2022년 10월 13일
0

글의 목적

Spring Framework 와 Spring boot의 차이점에 대해 설명하는 글입니다.

Spring boot & Spring Framework 의 관계

  • Spring boot는 Spring Framework라는 큰 틀에 속하는 도구이기 때문에, 둘의 관계를 잘 이해해야 한다.
  • Spring framework를 조금 더 편하게 사용할 수 있게 해주는 툴이다.(스프링의 Best Practice만 모아놓은 스프링 래퍼라고 표현할 수 있다.)
  • Spring boot Spring Framework의 많은 것들을 미리 설정해 놓았다.

Spring Vs Spring boot

Library Dependency 자동 설정 (라이브러리 버전 자동관리)

Starter를 통한 Dependency 자동화 : Spring Framework에서는 각각의 Dependency들의 호환되는 버전을 하나하나 맞추고, 버전이 바뀌게 되면 다른 dependency까지 맞춰 줘야 해서 version 관리의 어려움이 많았으나, starter 라이브러리들이 Dependeny를 관리해 주 어 편리하게 되었다.

그렇다면 어떤식으로 자동 버전 호환을 시킬까?

Maven을 사용하는 경우
Starter로 의존성을 추가하면, 부모 (spring-boot-starter-parent)로 부터 의존성을 상속받아 자동으로 버전이 Mapping된다.

Gradle일 경우
io.spring.dependency-management 플러그인을 적용하면, 자동으로 spring-boot-dependencies를 import 한다고 한다

Springboot 1.4.5 공식문서에 다음과 같이 나와있다.
The spring-bootplugin automatically applies the Dependency Management Plugin
and configures it to import the spring-boot-starter-parentbom. This provides a similar dependency management experience to the one that is enjoyed by Maven users

SpringBoot 2.5.0 공식문서 에서도
When you apply the io.spring.dependency-management plugin, Spring Boot’s plugin will automatically import the spring-boot-dependencies bom. from the version of Spring Boot that you are using. This provides a similar dependency management experience to the one that’s enjoyed by Maven users.

결론 : Gradle을 사용할 경우 spring-boot plugin <org.springframework.boot>,<io.spring.dependency-mangement> 만 존재하다면, 의존성관리를 알아서 잘 진행해준다.

Auto Configuration

Spring Boot의 Auto-Configuration 은 추가한 jar 파일에 따라 자동적으로 설정 해준다.

cf) Auto-Configuration을 사용하고 싶다면 @SpringBootApplication or @EnableAutoConfiguration 사용함녀 된다

  1. Component scan을 통해 (base package 설정이 안되있다면, 위의 annotation이 붙어있는 package를 기준으로) class파일들을 읽고 빈으로 등록한다.
  2. Component scan 이후에, 사전에 정의한 라이브러리들의 bean을 등록한다. (META-INF의 Spring.factories 경로에 있는 class들)

기타

Web Application Server인 Tomcat을 내장하고 있어서 Build를 통해 패키징 후 , jar파일을 통해 간단히 배포할 수 있다.


#cf) 스프링의 특징을 다시 한번 조사하고 정리할 필요가 있을거 같다. 자세히 모르는 것 같다.

Reference

[Spring 특징]
https://devkingdom.tistory.com/102

profile
개발자 지망생입니다.

0개의 댓글