Spring Boot 2.0.1 reference 정리 1

2018-04-10

1. Introducing Spring Boot

  • 독립적이고 실제 제품 수준의 스프링 기반의 애플리케이션을 만들기 쉽게 해줌.
  • 전통적인 war 배포 방식이나 java -jar를 이용하여 시작할 수 있는 java 응용 프로그램을 만들 수 있다
  • 스프링 부트를 이용하면 기존 스프링을 사용할 때 보다 빠르게 시작할 수 있다



2. System Requirements

  • 스프링부트 2.0.1은 자바 8이나 9, 스프링 프레임워크 5.5.5 이상을 요구한다. 빌드는 Maven 3.2+, Gradle 4를 지원한다.


2-1. Servlet Containers

  • 지원하는 서블릿 버전은 3.1 이상이다.
  • 서블릿 버전 3.1 이상을 지원하는 컨테이너라면 사용 가능하다.
Name Servlet Version
Tomcat 8.5 3.1
Jetty 9.4 3.1
Undertow 1.4 3.1



3. Installation Spring Boot

  • 스프링 부트는 자바 라이브러리 이므로 spring-boot-*.jar 파일 의존성만 추가하면 된다.


3-1. by Maven

  • 스프링 부트 의존성은 org.springframework.boot를 groupId로 사용한다.
  • Maven POM 파일은 spring-boot-starter-parent 프로젝트를 상속한다. (spring-boot-starter-parent의 pom.xml 파일을 상속받음)
  • 또한 하나 이상의 starter 의존성을 선언한다.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.example</groupId>
	<artifactId>myproject</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<!-- Inherit defaults from Spring Boot -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.1.RELEASE</version>
	</parent>

	<!-- Add typical dependencies for a web application -->
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>

	<!-- Package as an executable jar -->
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>



4. annotations

4-1. @RestConroller @RequestMapping Annotations

  • @RestController는 stereotype-annotation 중의 하나
  • stereo-annotation이란 spring의 @Component 어노테이션과 다르게 용도를 구별하기 위해 사용한다. (@Component, @Service, @Repository, @Controller)
  • @RestController와 @RequestMapping은 스프링 부트가 아닌 스프링의 annotations이다.


4-2. @EnableAutoConfiguration

  • 스프링 부트가 지원하는 annotation
  • classpath에 기반해서 자동 설정을 지원한다.
  • 즉 classpath에 tomcat-embeded-core.jar가 있으면 톰캣 서버가 세팅 되고, spring-webmvc.jar가 있으면 자동으로 web.xml을 생성하여 Dispatcher Servlet을 등록해준다.

4-3. the “main” Method

  • run()을 호출함으로써 스프링 부트의 SpringApplication 클래스에 실행을 위임한다.


@SpringBootApplication
public class Example {

	public static void main(String[] args) {
		SpringApplication.run(Example.class, args);
	}
}


참고

백기선님 스프링부트 2.0 강의
Spring Boot Reference Guide
스프링 부트 @EnableAutoConfiguration