- 스프링 부트 활용 웹 서버와 서블릿 컨테이너
- 스프링 부트 활용 스프링 부트와 내장 톰캣
- 스프링 부트 활용 스프링 부트 스타터와 라이브러리
- 스프링 부트 활용 자동 구성(auto configuration)
- 스프링 부트 활용 외부설정과 프로필1
- 스프링 부트 활용 외부설정과 프로필2
- 스프링 부트 활용(2) 액츄에이터
- 스프링 부트 활용 마이크로미터, 프로메테우스, 그라파나
- 스프링 부트 활용 모니터링 메트릭 활용
스프링 부트 활용 스프링 부트 스타터와 라이브러리
0. 라이브러리 직접 관리
스프링부트를 사용하기 전에는, 어떤 라이브러리를 사용할지를 선택해야 하며, 라이브러리 버전까지 고민해야 했다. 또한 라이브러리들끼지 버전에 따라 호환성 문제도 발생했다.
스프링 부트는 개발자가 라이브러리들을 편리하게 사용할 수 있는 다양한 기능들을 제공한다.
- 외부 라이브러리 버전 관리
- 스프링 부트 스타터 제공
다음은 스프링 부트의 라이브러리 관리 기능을 사용하지 않은 build.gradle 이다.
plugins {
id 'org.springframework.boot' version '3.0.2'
id 'java'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
//1. 라이브러리 직접 지정
//스프링 웹 MVC
implementation 'org.springframework:spring-webmvc:6.0.4'
//내장 톰캣
implementation 'org.apache.tomcat.embed:tomcat-embed-core:10.1.5'
//JSON 처리
implementation 'com.fasterxml.jackson.core:jackson-databind:2.14.1'
//스프링 부트 관련
implementation 'org.springframework.boot:spring-boot:3.0.2'
implementation 'org.springframework.boot:spring-boot-autoconfigure:3.0.2'
//LOG 관련
implementation 'ch.qos.logback:logback-classic:1.4.5'
implementation 'org.apache.logging.log4j:log4j-to-slf4j:2.19.0'
implementation 'org.slf4j:jul-to-slf4j:2.0.6'
//YML 관련
implementation 'org.yaml:snakeyaml:1.33'
}
tasks.named('test') {
useJUnitPlatform()
}
*버전을 하나하나 지정해줘야 한다!*
1. 스프링 부트 라이브러리 버전 관리
스프링 부트는 개발자 대신에 수 많은 라이브러리의 버전을 직접 관리해주기 때문에 라이브러리 버전은 생략해도 된다.
버전 관리 기능을 사용하려면 io.spring.dependency-management 플러그인을 사용해야 한다.
build.gradle - plugins 수정
plugins {
id 'org.springframework.boot' version '3.0.2'
id 'io.spring.dependency-management' version '1.1.0' //추가
id 'java'
}
build.gradle - dependencies 수정 (뒤에 붙은 버전 정보를 모두 삭제해준다.)
dependencies {
//2. 스프링 부트 라이브러리 버전 관리
//스프링 웹, MVC
implementation 'org.springframework:spring-webmvc'
//내장 톰캣
implementation 'org.apache.tomcat.embed:tomcat-embed-core'
//JSON 처리
implementation 'com.fasterxml.jackson.core:jackson-databind'
//스프링 부트 관련
implementation 'org.springframework.boot:spring-boot'
implementation 'org.springframework.boot:spring-boot-autoconfigure'
//LOG 관련
implementation 'ch.qos.logback:logback-classic'
implementation 'org.apache.logging.log4j:log4j-to-slf4j'
implementation 'org.slf4j:jul-to-slf4j'
//YML 관련
implementation 'org.yaml:snakeyaml'
}
dependency-management 버전 관리
io.spring.dependency-management 플러그인을 사용하면 spring-boot-dependencies 에 있는 다음 bom 정보를 참고한다.
참고 : 스프링 부트가 관리하는 외부 라이브러리 버전 확인
https://docs.spring.io/spring-boot/docs/current/reference/html/dependencyversions.html#appendix.dependency-versions.coordinates
스프링 부트가 관리하지 않는 외부 라이브러리도 있다. 특히 아직 잘 알려지지 않거나 대중적이지 않은 경우가 그러한데, 이때는 다음과 같이 라이브러리의 버전을 직접 적어주어야 한다. implementation 'org.yaml:snakeyaml:1.30'
2. 스프링 부트 스타터
스프링 부트는 프로젝트를 시작하는데 필요한 관련 라이브러리를 모아둔 스프링 부트 스타터를 제공한다.
build.gradle - dependencies 수정
모든 denpendencies 를 지우고 해당 dependency 를 추가한다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
- spring-boot-starter-web 이 라이브러리 하나로 지금까지 우리가 직접 넣어주었던 모든 라이브러리가 포함된다.
- 이것은 사용하기 편리하게 의존성을 모아둔 세트이다.
스프링 부트 스타터 - 자주 사용하는 것 위주
- 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 : 스프링 배치를 위한 스타터
라이브러리 버전 변경
외부 라이브러리의 버전을 변경하고 싶을 때 다음과 같은 형식으로 편리하게 변경할 수 있다.
ext['tomcat.version'] = '10.1.4'
- 외부 라이브러리 버전 변경에 필요한 속성 값 : https://docs.spring.io/spring-boot/docs/current/reference/html/dependencyversions.html#appendix.dependency-versions.properties
댓글남기기