백기선님의 스프링 부트 2.0 유튜브 강의를 보고 정리한 내용입니다
스프링 부트 2.0 Day 1. 스프링 부트 시작하기 - 백기선
해당 영상은 spring-boot 공식 reference를 보며 학습하는 내용입니다.
SpringBoot의 정의
- 독립적이고, 실제 제품 수준의 Spring 기반 application을 쉽게 만들 수 있게 도와주는 framework
- java -jar를 통해 쉽게 application을 시작 할 수 있다.
- 기존의 Spring 프로젝트는 기본 구축(Web 설정 등등)을 위해 많은 어려움과 시간을 쏟아야했다.
이를 쉽게 해주기 위해 SpringBoot가 등장
- 요구 사항이 다양해도, 요구 사항에 따라 다양하고 유연하게 Custom할 수 있다.
SpringBoot 2.0 스펙
- SpringBoot 2.0.0.RC2
- Java8 or higher
- Spring Framework 5.0.4.RELEASE
- Tomcat 8.5 (Servlet version 3.1)
- Jetty 9.4 (Servlet version 3.1)
- Apache Maven 3.2
- etc…
Maven 의존성 설정으로 시작하기
- Maven, pom.xml으로 Springboot parent 설정과 상속 관계를 만들 수 있다.
태그를 통해 spring-boot-starter-parent안에 정의된 아티팩트 정보를 상속받을 수 있다.
- 의존성은 Override를 통해 변경 가능
1 2 3 4 5 6
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>{spring-boot.version}</version> <relativePath/> </parent>
- 의존성은 Override를 통해 변경 가능
- spring-boot-starter-parent를 이용하는 이유는 의존성 관계를 쉽게 풀어내기 위해서
미리 필요한 정보들을 부모 아티팩트 정보에 정의해두고, 자식 어플리케이션에서는 상속만 받아서 실행 가능- 단 maven 상속 관계는 단 하나만 가능하기 때문에 기존에 상속 관계가 존재하면
태그를 이용해
spring-boot-dependencies 관계를 설정해 사용할 수 있다.
- 단 maven 상속 관계는 단 하나만 가능하기 때문에 기존에 상속 관계가 존재하면
- 어플리케이션 구성에 필요한 spring-boot-starter**들을 지원한다.
(web, jpa, redis 등등)
Main Class
- Executable JAR 파일로 packaging하여 시작할 경우, java의 main 클래스처럼 @SpringBootApplication 어노테이션이 붙은 클래스의 main method를 시작한다.
- 해당 method를 통해 commandLine에서 넘어온 Arguments를 SpringBootApplication에서 사용가능하다.
@EnableAutoConfiguration
- SpringBoot가 제공해주는 어노테이션
- SpringBoot에게 사용자가 어떤 설정을 원하는지 알려주는 역할
( 기본적으로 SpringBoot가 제공해주는 설정을 사용하라는 어노테이션 ) - 어떤 의존성이 ClassPath내에 존재하느냐에 따라 동작 방식 결정
- dependency로 어떤 starter를 설정해줬느냐에 따라 Auto로 설정해준다.