1. 스프링 부트의 특징
- 의존성관리
- 자동설정
- 내장 웹서버
2. 의존성 관리
스프링 부트는 starter- 를 통해서 의존성관리를 한다. pom.xml
파일에 상위에 정의되어있는 spring-boot-starter-parent
위에 spring-boot-dependencies
를 보면 다음과 같이 수많은 버전들을 관리 해준다.
<properties>
<activemq.version>5.15.9</activemq.version>
<antlr2.version>2.7.7</antlr2.version>
<appengine-sdk.version>1.9.73</appengine-sdk.version>
//... 생략
<properties>
그래서 pom.xml
에 version
를 명시하지 않아도, parent -> dependencies에 명시했던 버전 관리를 통해서 자동으로 버전이 등록된다. 인텔리J에서 클릭하면 해당 버전으로 이동하게 된다. 물론 다른 버전을 적용하고 싶으면 명시적으로 version을 명시적으로 적었을 때 오버라이딩이 된다.
3. 자동설정
스프링 부트는 빈을 등록하는게 크게 2가지로 이루어진다.
- @ComponentScan을 통해서 @Component, @Serveice, @Repository .. 와 같은 컴포넌트 기반을 스캐닝해서 우리가 정의한 빈들을 등록한다.
- @EnableAutoConfiguration을 통해서,
META-INF
하위에 있는spring.factories
파일에 정의된 클래스들에 의해서 빈으로 등록된다. (@ConditionalOnMissingBean 같은 경우, 빈으로 등록되어있지 않은 경우, 저기에서 정의한 대로 빈으로 등록한다.)
4. 내장 웹서버
스프링 부트는 내장 웹서버를 가지고(?) 있다. 메인 애플리케이션으로 띄울 수 있고, jar로 패키징된 파일 하나로 만들고, 해당 jar를 실행해서도 애플리케이션을 띄울 수 있다.
스프링 부트는 != 웹서버는 아니다.
여러 가지 설정을 할 수 있다.
- server.port = 0 (random)
- spring.main.web-application-type=none -> 내장 웹서버로 실행하지 않음
- https 설정, http2.0 설정
📚 Related Posts
- Spring WebFlux 테스트 방법
- Spring과 MongoDB 연동 실전 가이드
- SpringBoot, MongoDB 시작하기
- Spring Boot 서버 타임존 설정 방법
- SpringBoot CommandLineRunner, ApplicationRunner 초기화 방법
- Jackson, LocalDateTime Serialization, Deserialization 이슈
- Spring Boot, Dockerfile로 이미지 생성, 배포하기
- SpringBoot RabbitMQ 연동하기
- Junit5 정리
- Spring Sentry(에러 트래킹 서비스) 적용하기
- [Spring] 빈 주입하는 방법 && Best Practice
- Thymeleaf 실무에서 자주 사용하는 것들
- Thymeleaf Collection 정보 화면에 렌더링하기
- Spring, JPA를 이용한 REST API 만들기
- [Spring] MultipartFile을 이용한 파일 업로드
- [Spring] 모델 검증(validation)
- [Spring]HandlerMethodArgumentResolver 인터페이스
- [Spring] DispatcherServlet에 대해서 알아보자
- [Spring] MVC 만들어 보기
- [Spring] 메세지 컨버터
- [Spring] MVC 살펴보기
- [Spring] @ConfigurationProperties를 이용해서 properties값들을 클래스로 관리하기
- [Spring] Profile 설정하기
- [Spring] SpringApplication를 통한 코딩
- [Spring Boot] 스프링 부트 3가지 특징
- [Spring] @SpringBootAppllication 어노테이션에 대한 고찰
- [Spring] bean circular dependencies (빈 순환 참조)
- [Spring]Bean에 대해서 알아보자
- SpringBoot, JPA, H2를 이용한 간단한API 작성
- [Spring] Spring Data Common 프로젝트 살펴보기