스프링과 스프링 부트 차이

2023. 3. 17. 23:05개발

반응형

 

스프링 부트

 

김영한님의 스프링 부트 - 핵심 원리와 활용 강의를 구매해서 듣고 있다.

이전에 전자정부 프레임 워크도 그렇고 결국 스프링 기반의 프로젝트를 수행 할 때 와 요즘 스프링부트를 기반으로 프로젝트를 진행 할 때의 차이점을 말하자면 역시 라이브러리 관리 및 기타 설정의 편리함이 발군이라고 생각한다..!!

특히 버전에 따른 라이브러리 관리를 알아서 해준다는게 중요한 점이다. (예를들어 xml관련 라이브러리 버전을 올려야 하는 일이 있었는데 그때 해당 라이브러리를 사용하던 엑셀관련 기능중 특정 기능만 안되어서 오류가 발생했고 해결하려고 버전을 계속 바꿔가면서 체크하던게…………….참 힘들었다.)

스프링부트에서 제공하는 기능은 많지만 중요하다고 생각되는 5가지를 꼽자면 아래와 같다.

스프링 부트 - 핵심 기능 5가지

  1. WAS (내장 톰캣이 있다. 별도로 톰캣을 설치하고 설정하고 하는것에 대해 단순화됨)
  2. 라이브러리 관리
    - spring initializer를 통한 프로젝트를 손쉽게 생성 가능함 그리고 spring-starter 라이브러리의 지원으로 필요한 라이브러리를 쉽게 사용 가능하다.
    - 스프링과 외부 라이브러리 간의 버전 관리
  3. 자동 구성 프로젝트 시작에 필요한 스프링과 외부 라이브러리의 빈을 자동으로 등록해준다.
  4. 외부 설정 환경에 따라 달라져야 하는 외부 설정 공통화 (local, dev, prod 등등 각각 다른 환경 설정에 대한 설정 지원)
  5. 프로덕션 준비 모니터링을 위한 메트릭, 상태 확인 기능 제공

1번의 경우에는 매우 큰 장점이다.

별도의 톰캣 설치 및 설정없이 개발,운영 환경에서의 실행이 가능 한점은.. 기타 설정에 매우 힘들었던 이전 회사들을 생각하면… 억장이 무너질때가 많았다 …! (특히 톰캣 1개로 여러개의 서버 설정을 하여 구동 하거나 할 때….. 괴로웠다.)

2번의 경우에는..? 두말할 필요 없이 매우 큰 장점이다.

라이브러리 간의 버전별 호환성을 다 확인하고 체크 하는건 너무나….힘든 일이다.

그렇다면 여기서 생기는 의문점…? 스프링부트에서는 스프링버전에 따라 호환되는 라이브러리 버전을 어떻게 맞춰 주는것인가?

코드로 보고 싶다면 아래 주소내부에 스프링부트 버전 별 bom에 명시되어 있는 버전들을 사용한다고 한다!!!

https://github.com/spring-projects/spring-boot/blob/main/spring-boot-project/spring-boot-dependencies/build.gradle

spring-boot/build.gradle at main · spring-projects/spring-boot

예를들어 테스트코드 작성 할 때 많이 사용되는 H2의 경우에는 아래와 같은 형태로 명시되어 있었다..!

bom{
	library("H2", "2.1.214") {
		group("com.h2database") {
			modules = [
				"h2"
			]
		}
	}
}

하지만 공식홈페이지에서 스프링에서 관리 하는 것은 공식홈페이지 레퍼런스 문서에서 확인 가능하다…!

https://docs.spring.io/spring-boot/docs/current/reference/html/dependency-versions.html#appendix.dependency-versions.coordinates

Dependency Versions

스프링 부트 자주 쓰이는 스타터..!
spring-boot-starter : 핵심 스타터, 자동 구성, 로깅, YAML
spring-boot-starter-jdbc : JDBC, HikariCP 커넥션풀
spring-boot-starter-data-jpa : 스프링 데이터 JPA, 하이버네이트
spring-boot-starter-data-mongodb : 스프링 데이터 몽고
spring-boot-starter-data-redis : 스프링 데이터 Redis, Lettuce 클라이언트
spring-boot-starter-thymeleaf : 타임리프 뷰와 웹 MVC
spring-boot-starter-web : 웹 구축을 위한 스타터, RESTful, 스프링 MVC, 내장 톰캣
spring-boot-starter-validation : 자바 빈 검증기(하이버네이트 Validator)
spring-boot-starter-batch : 스프링 배치를 위한 스타터

반응형