SlideShare uma empresa Scribd logo
1 de 15
http://docs.spring.io/spring-boot/docs/current-
SNAPSHOT/reference/htmlsingle/
Spring boot 참조 설명서 요약
Part II - Getting Started
Part III - Using Spring Boot
2016-10-dd
(스프링) 프로젝트 셋업 힘들죠?
• 문제: 번잡스러운 사전 설치 작업들
• 목표: Spring 기반의 stand-alone, production-
grade 앱 개발을 쉽게 시작할 수 있게 만들자
• 방법: (의도적으로) 편향된 관점으로 Spring 및
3rd 파티 모듈들을 구성 —> Spring Boot
Build artifacts (산출물)
• java -jar 로 바로 실행 가능한 jar
• Tomcat에 바로 배포 가능한 war
• Spring Boot CLI를 이용한 실행도 가능
Spring Boot의 목표
• 스프링 기반 개발을 쉽게 시작
• 처음에 쉽게 시작할 수 있는 구성 / 이후 쉬운
tailoring
• 비기능성 feature 포함
• embedded servers, security, metrics, health
checks, externalized configuration
• No No No - Code 생성, XML 설정
System Requirements
• Java 7 and 8 (6도 가능 — 설정필요)
• Maven (3.2+), Gradle (1.12 or 2.x), Gradle 3은 미지원
• Spring Framework 4.3.3.RELEASE 이상
• ‘건전지 포함’ (Servlet containers, embedded DBs, …)
• (Optional) Spring Boot CLI - groovy DSL
• 명령창에서 javac, java를 직접 사용하는 대신에
• $ spring run app.groovy 처럼 사용할 수 있어
• Gradle과 중복되는 부분이 있지만… rails 같은 모습을 추구하는 듯
설치
buildscript {
repositories { mavenCentral() }
dependencies { classpath(“org.springframework.boot:spring-boot-gradle-plugin:1.4.1.RELEASE") }
}
apply plugin: 'java'
apply plugin: 'spring-boot'
jar { baseName = ‘myproject’; version = ‘0.0.1-SNAPSHOT' }
repositories { mavenCentral() }
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
• Maven이나 Gradle 이용해서 의존성 관리로 설치할 것 권장 (이하 Gradle)
• Spring Boot 의존성들은 org.springframework.boot 그룹에 속한다.
• spring-boot-gradle-plugin은 spring boot를 쉽게 쓸 수 있게 하는 Gradle
plugin
• 처음에는 몇 개의 “starter”들을 사용하게 됨 (spring-boot-starter-*)
헬로 월드 - build.gradle
• $ mkdir spring-boot-hello && cd spring-boot-hello
• $ {EDIT} build.gradle
buildscript {
repositories { mavenCentral() }
dependencies { classpath(“org.springframework.boot:spring-boot-gradle-plugin:1.4.1.RELEASE") }
}
apply plugin: 'java'
apply plugin: 'spring-boot'
jar { baseName = ‘hello' }
repositories { mavenCentral() }
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
헬로 월드 - java source
• $ mkdir -p src/main/prj/hello && cd
src/main/java/prj/hello
• $ {EDIT} Hello.java
package prj.hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@EnableAutoConfiguration
public class Hello {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Hello.class, args);
}
}
헬로 월드 - build & run & test
• (빌드) $ gradle build
• (실행) $ java -jar build/libs/hello.jar 혹은 $ gradle bootRun (내장 톰캣으로 서비스)
• (테스트) $ curl http://localhost:8080/ (응답: “Hello World”)
Spring Boot Starters
• spring-boot-starter
• spring-boot-starter-test
• spring-boot-starter-logging
• spring-boot-starter-web
• spring-boot-starter-thymeleaf
• spring-boot-starter-data-jpa
• spring-boot-starter-security
• … and many more
@EnableAutoConfiguration
• package org.springframework.boot.autoconfigure
• 사용 예상 bean들을 Spring 설정에 추가 (dependencies
jars)
• starter 외의 jar에 대해서도 충분히 똑똑하게 처리
• exclude={…}, excludeName={…} 필드로 명시 가능
• app 별로 하나만 지정 가능 (보통 Class with main())
@SpringBootApplication
• package org.springframework.boot.autoconfigure
• @SpringBootConfiguration
• aliased @Configuration for Spring Boot App
• + @EnableAutoConfiguration
• + @ComponentScan
main() Class의 위치
• @SpringBootApplication으로 명시적으로 main() Class지정할 수 있
지만
• app의 root package에 위치 시키면 편함 (아래 예에서는
Application.java)
• @EnableAutoConfiguration이나 @ComponentScan에 base
search package 지정을하지 않아도 main() Class 위치를 기본으
로 택하기 때문
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java
차츰 Auto-configuration 대체 (해치지 않
아요)
• (예) 직접 ‘DataSource’ 빈을 추가하면 기본 제공되던 것은 더 이상 사용되
지 않음
• 앱 시작시 —debug 옵션 지정하여 auto-configuration 관련 로그에서 확인
가능
• @EnableAutoConfiguration(exclude={}) 이용
• 혹은 spring.autoconfigure.exclude 프로퍼티 이용
import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.context.annotation.*;
@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}
이제 관심있는 주제별로 하나씩
• Part IV. Spring Boot features
• SpringApplication / Externalized Configuration / Profiles / Logging / Test
• Spring Web MVC framework
• Working with SQL databases (JPA)
• Distributed Transactions with JTA
• …
• Part V. Spring Boot Actuator: Product-ready features
• Part VI. Deploying Spring Boot applications
• Part VII. Spring Boot CLI
• Part VIII. Build tool plugins
• Part IX. ‘How-to’ guides (세부 타스크별 handbook성 정보)
• Part X. Appendix (application property 항목 정리, 각종 정보 포맷등 테이블성 정보)

Mais conteúdo relacionado

Mais procurados

spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례Daehwan Lee
 
overview of spring4
overview of spring4overview of spring4
overview of spring4Arawn Park
 
Spring camp 발표자료
Spring camp 발표자료Spring camp 발표자료
Spring camp 발표자료수홍 이
 
[115] clean fe development_윤지수
[115] clean fe development_윤지수[115] clean fe development_윤지수
[115] clean fe development_윤지수NAVER D2
 
20131217 html5
20131217 html520131217 html5
20131217 html5DK Lee
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Springcamp spring boot intro
Springcamp spring boot introSpringcamp spring boot intro
Springcamp spring boot introJae-il Lee
 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVCArawn Park
 
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)DK Lee
 
Clean Front-End Development
Clean Front-End DevelopmentClean Front-End Development
Clean Front-End Development지수 윤
 
02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)Hankyo
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)DK Lee
 
03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)Hankyo
 
Spring 웹 프로젝트 시작하기
Spring 웹 프로젝트 시작하기Spring 웹 프로젝트 시작하기
Spring 웹 프로젝트 시작하기jiseob kim
 
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
02.실행환경 실습교재(데이터처리)
02.실행환경 실습교재(데이터처리)02.실행환경 실습교재(데이터처리)
02.실행환경 실습교재(데이터처리)Hankyo
 

Mais procurados (20)

spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례
 
Spring boot actuator
Spring boot   actuatorSpring boot   actuator
Spring boot actuator
 
overview of spring4
overview of spring4overview of spring4
overview of spring4
 
Spring camp 발표자료
Spring camp 발표자료Spring camp 발표자료
Spring camp 발표자료
 
[115] clean fe development_윤지수
[115] clean fe development_윤지수[115] clean fe development_윤지수
[115] clean fe development_윤지수
 
20131217 html5
20131217 html520131217 html5
20131217 html5
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
Express 프레임워크
Express 프레임워크Express 프레임워크
Express 프레임워크
 
Springcamp spring boot intro
Springcamp spring boot introSpringcamp spring boot intro
Springcamp spring boot intro
 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVC
 
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#33.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
 
Clean Front-End Development
Clean Front-End DevelopmentClean Front-End Development
Clean Front-End Development
 
02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
 
03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)
 
Spring 웹 프로젝트 시작하기
Spring 웹 프로젝트 시작하기Spring 웹 프로젝트 시작하기
Spring 웹 프로젝트 시작하기
 
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
02.실행환경 실습교재(데이터처리)
02.실행환경 실습교재(데이터처리)02.실행환경 실습교재(데이터처리)
02.실행환경 실습교재(데이터처리)
 

Semelhante a Spring boot-summary(part2-part3)

Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodedpTablo
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Javajigi Jaesung
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트Keesun Baik
 
Share some development
Share some developmentShare some development
Share some developmentJi Heon Kim
 
Spring vs. spring boot
Spring vs. spring bootSpring vs. spring boot
Spring vs. spring bootChloeChoi23
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원탑크리에듀(구로디지털단지역3번출구 2분거리)
 
N02 app engineseminar
N02 app engineseminarN02 app engineseminar
N02 app engineseminarSun-Jin Jang
 
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java ProjectJi-Woong Choi
 
Backend Master | 3.1.4 Build - Java build tool - Maven/Gradle Build Lifecycle
Backend Master | 3.1.4 Build - Java build tool - Maven/Gradle Build LifecycleBackend Master | 3.1.4 Build - Java build tool - Maven/Gradle Build Lifecycle
Backend Master | 3.1.4 Build - Java build tool - Maven/Gradle Build LifecycleKyunghun Jeon
 
Gradle 한번 살펴보기
Gradle 한번 살펴보기Gradle 한번 살펴보기
Gradle 한번 살펴보기Junseo Youn
 
20130201 java deploy
20130201 java deploy20130201 java deploy
20130201 java deploySukjin Yun
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해중선 곽
 
Catalyst Framework 살펴보기
Catalyst Framework 살펴보기Catalyst Framework 살펴보기
Catalyst Framework 살펴보기corund
 

Semelhante a Spring boot-summary(part2-part3) (20)

Spring boot
Spring bootSpring boot
Spring boot
 
okspring3x
okspring3xokspring3x
okspring3x
 
Spring boot DI
Spring boot DISpring boot DI
Spring boot DI
 
Springmvc
SpringmvcSpringmvc
Springmvc
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCode
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트
 
Share some development
Share some developmentShare some development
Share some development
 
Spring vs. spring boot
Spring vs. spring bootSpring vs. spring boot
Spring vs. spring boot
 
Maven의 이해
Maven의 이해Maven의 이해
Maven의 이해
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
 
N02 app engineseminar
N02 app engineseminarN02 app engineseminar
N02 app engineseminar
 
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
 
Backend Master | 3.1.4 Build - Java build tool - Maven/Gradle Build Lifecycle
Backend Master | 3.1.4 Build - Java build tool - Maven/Gradle Build LifecycleBackend Master | 3.1.4 Build - Java build tool - Maven/Gradle Build Lifecycle
Backend Master | 3.1.4 Build - Java build tool - Maven/Gradle Build Lifecycle
 
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
 
Gradle 한번 살펴보기
Gradle 한번 살펴보기Gradle 한번 살펴보기
Gradle 한번 살펴보기
 
20130201 java deploy
20130201 java deploy20130201 java deploy
20130201 java deploy
 
5.Spring IoC&DI(DI와 관련된 어노테이션)
5.Spring IoC&DI(DI와 관련된 어노테이션)5.Spring IoC&DI(DI와 관련된 어노테이션)
5.Spring IoC&DI(DI와 관련된 어노테이션)
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
 
Catalyst Framework 살펴보기
Catalyst Framework 살펴보기Catalyst Framework 살펴보기
Catalyst Framework 살펴보기
 

Spring boot-summary(part2-part3)

  • 1. http://docs.spring.io/spring-boot/docs/current- SNAPSHOT/reference/htmlsingle/ Spring boot 참조 설명서 요약 Part II - Getting Started Part III - Using Spring Boot 2016-10-dd
  • 2. (스프링) 프로젝트 셋업 힘들죠? • 문제: 번잡스러운 사전 설치 작업들 • 목표: Spring 기반의 stand-alone, production- grade 앱 개발을 쉽게 시작할 수 있게 만들자 • 방법: (의도적으로) 편향된 관점으로 Spring 및 3rd 파티 모듈들을 구성 —> Spring Boot
  • 3. Build artifacts (산출물) • java -jar 로 바로 실행 가능한 jar • Tomcat에 바로 배포 가능한 war • Spring Boot CLI를 이용한 실행도 가능
  • 4. Spring Boot의 목표 • 스프링 기반 개발을 쉽게 시작 • 처음에 쉽게 시작할 수 있는 구성 / 이후 쉬운 tailoring • 비기능성 feature 포함 • embedded servers, security, metrics, health checks, externalized configuration • No No No - Code 생성, XML 설정
  • 5. System Requirements • Java 7 and 8 (6도 가능 — 설정필요) • Maven (3.2+), Gradle (1.12 or 2.x), Gradle 3은 미지원 • Spring Framework 4.3.3.RELEASE 이상 • ‘건전지 포함’ (Servlet containers, embedded DBs, …) • (Optional) Spring Boot CLI - groovy DSL • 명령창에서 javac, java를 직접 사용하는 대신에 • $ spring run app.groovy 처럼 사용할 수 있어 • Gradle과 중복되는 부분이 있지만… rails 같은 모습을 추구하는 듯
  • 6. 설치 buildscript { repositories { mavenCentral() } dependencies { classpath(“org.springframework.boot:spring-boot-gradle-plugin:1.4.1.RELEASE") } } apply plugin: 'java' apply plugin: 'spring-boot' jar { baseName = ‘myproject’; version = ‘0.0.1-SNAPSHOT' } repositories { mavenCentral() } dependencies { compile("org.springframework.boot:spring-boot-starter-web") testCompile("org.springframework.boot:spring-boot-starter-test") } • Maven이나 Gradle 이용해서 의존성 관리로 설치할 것 권장 (이하 Gradle) • Spring Boot 의존성들은 org.springframework.boot 그룹에 속한다. • spring-boot-gradle-plugin은 spring boot를 쉽게 쓸 수 있게 하는 Gradle plugin • 처음에는 몇 개의 “starter”들을 사용하게 됨 (spring-boot-starter-*)
  • 7. 헬로 월드 - build.gradle • $ mkdir spring-boot-hello && cd spring-boot-hello • $ {EDIT} build.gradle buildscript { repositories { mavenCentral() } dependencies { classpath(“org.springframework.boot:spring-boot-gradle-plugin:1.4.1.RELEASE") } } apply plugin: 'java' apply plugin: 'spring-boot' jar { baseName = ‘hello' } repositories { mavenCentral() } dependencies { compile("org.springframework.boot:spring-boot-starter-web") testCompile("org.springframework.boot:spring-boot-starter-test") }
  • 8. 헬로 월드 - java source • $ mkdir -p src/main/prj/hello && cd src/main/java/prj/hello • $ {EDIT} Hello.java package prj.hello; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @EnableAutoConfiguration public class Hello { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(Hello.class, args); } }
  • 9. 헬로 월드 - build & run & test • (빌드) $ gradle build • (실행) $ java -jar build/libs/hello.jar 혹은 $ gradle bootRun (내장 톰캣으로 서비스) • (테스트) $ curl http://localhost:8080/ (응답: “Hello World”)
  • 10. Spring Boot Starters • spring-boot-starter • spring-boot-starter-test • spring-boot-starter-logging • spring-boot-starter-web • spring-boot-starter-thymeleaf • spring-boot-starter-data-jpa • spring-boot-starter-security • … and many more
  • 11. @EnableAutoConfiguration • package org.springframework.boot.autoconfigure • 사용 예상 bean들을 Spring 설정에 추가 (dependencies jars) • starter 외의 jar에 대해서도 충분히 똑똑하게 처리 • exclude={…}, excludeName={…} 필드로 명시 가능 • app 별로 하나만 지정 가능 (보통 Class with main())
  • 12. @SpringBootApplication • package org.springframework.boot.autoconfigure • @SpringBootConfiguration • aliased @Configuration for Spring Boot App • + @EnableAutoConfiguration • + @ComponentScan
  • 13. main() Class의 위치 • @SpringBootApplication으로 명시적으로 main() Class지정할 수 있 지만 • app의 root package에 위치 시키면 편함 (아래 예에서는 Application.java) • @EnableAutoConfiguration이나 @ComponentScan에 base search package 지정을하지 않아도 main() Class 위치를 기본으 로 택하기 때문 com +- example +- myproject +- Application.java | +- domain | +- Customer.java | +- CustomerRepository.java | +- service | +- CustomerService.java | +- web +- CustomerController.java
  • 14. 차츰 Auto-configuration 대체 (해치지 않 아요) • (예) 직접 ‘DataSource’ 빈을 추가하면 기본 제공되던 것은 더 이상 사용되 지 않음 • 앱 시작시 —debug 옵션 지정하여 auto-configuration 관련 로그에서 확인 가능 • @EnableAutoConfiguration(exclude={}) 이용 • 혹은 spring.autoconfigure.exclude 프로퍼티 이용 import org.springframework.boot.autoconfigure.*; import org.springframework.boot.autoconfigure.jdbc.*; import org.springframework.context.annotation.*; @Configuration @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) public class MyConfiguration { }
  • 15. 이제 관심있는 주제별로 하나씩 • Part IV. Spring Boot features • SpringApplication / Externalized Configuration / Profiles / Logging / Test • Spring Web MVC framework • Working with SQL databases (JPA) • Distributed Transactions with JTA • … • Part V. Spring Boot Actuator: Product-ready features • Part VI. Deploying Spring Boot applications • Part VII. Spring Boot CLI • Part VIII. Build tool plugins • Part IX. ‘How-to’ guides (세부 타스크별 handbook성 정보) • Part X. Appendix (application property 항목 정리, 각종 정보 포맷등 테이블성 정보)