์ํด
/
Back-End
/
Spring Boot
Search
Share
Spring Boot
์คํ๋ง ๋ถํธ ๊ธฐ์ด
SpringBoot_TJE
ALOHA-CLASS
ALOHA CLASS - SpringBoot [LIVE] V.1
Spring Boot ๊ธฐ์ด
ํ๋ก์ ํธ ๋์ฐ๋ฏธ
๊ฐ๋ฐํ๊ฒฝ ์ธํ
VSCODE Spring Boot ๊ฐ๋ฐ ํ๊ฒฝ ์ค์น
Spring Boot
1.
VS CODE ์ค์น
2.
JDK 17
3.
Gradle
VSCODE Spring Boot ๊ฐ๋ฐ ํ๊ฒฝ ์ค์น
youtu.be
SpringBoot
VSCODE
์ค์น
Spring Boot ์ค์น
1.
JDK 17 ์ด์
2.
Eclipse
3.
Spring Boot ํ๋ก์ ํธ ์์ฑ
Spring Boot ์ค์น (Eclipse)
youtu.be
SpringBoot
Eclipse
์ค์น
Spring Boot ํ๋ก์ ํธ ์์ฑ (Eclipse)
youtu.be
SpringBoot
Eclipse
Gradle ์ค์น
1.
๋ค์ด๋ก๋
2.
์์ถํด์
3.
์์คํ ํ๊ฒฝ ๋ณ์ ์ค์
4.
gradle ์ค์น ํ์ธ
๋ค์ด๋ก๋
Gradle ์ค์น
youtube.com
gradle
์ค์น
Gradle ๋ฐฐํฌ (SpringBoot)
1.
ํฐ๋ฏธ๋ ์คํ
2.
build.gradle ๋น๋ ํ์ผ์ด ์๋ ํ๋ก์ ํธ ๊ฒฝ๋ก๋ก ์ด๋
3.
๋ฐฐํฌ ๋ช ๋ น์ด ์คํ
4.
์๋ฐ ํ๋ก๊ทธ๋จ ์คํ ๋ช ๋ น์ด ์คํ
Gradle ๋ฐฐํฌ (SpringBoot)
youtube.com
VSCODE
SpringBoot
gradle
VS CODE & Gradle ๋ฐฐํฌ
โข
Gradle for Java ํ์ฅ ์ค์น
โข
bootWar task ์คํ
Gradle for Java ํ์ฅ ์ค์น
VS CODE & Gradle ๋ฐฐํฌ
youtube.com
SpringBoot
VSCODE
gradle
VSCODE Spring Boot ํ๋ก์ ํธ ์์ฑ
โข
Create Spring Initailizer
โข
index.html ๋ฉ์ธ ํ์ด์ง ์์ฑ
โข
ํ๋ก์ ํธ ์คํ
โข
๋ธ๋ผ์ฐ์ ์คํ
โข
์ธ๋ถ ๋ธ๋ผ์ฐ์ ์ค์
Create Spring Initailizer
VSCODE Spring Boot ํ๋ก์ ํธ ์์ฑ
์คํ๋ง ๋ถํธ ์ค๋น
Spring Boot
์คํ๋ง ๋ถํธ๋ ์๋ฐ ๊ธฐ๋ฐ์ ์คํ ์์ค ํ๋ ์์ํฌ๋ก, ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ ์ ์๋๋ก ๋์์ค๋๋ค. ์คํ๋ง ํ๋ ์์ํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ๊ฐ๋ฐ์๋ค์ด ์ค์ ์ ์ต์ํํ๊ณ ๊ฐ๋ฐ์ ์ง์คํ ์ ์๋๋ก ์ ๊ณตํฉ๋๋ค.
์คํ๋ง ๋ถํธ๋ ๋ง์ ๊ฐ๋ฐ์์ ๊ธฐ์ ์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ฉฐ, ์คํ๋ง ๋ถํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐํธํํ๊ณ ๋น ๋ฅด๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
Spring Boot vs Spring
์คํ๋ง ๋ถํธ์ ์คํ๋ง ํ๋ ์์ํฌ๋ ๋น์ทํ ๊ธฐ๋ฐ์ ๊ฐ์ง๊ณ ์์ง๋ง ๋ชฉํ์ ์ฌ์ฉ ๋ฐฉ์์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์คํ๋ง ๋ถํธ๋ ๊ฐ๋ฐ์๋ค์ด ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฒ์ ์ค์ ์ ๋๊ณ ์์ต๋๋ค. ์ด๋ฅผ ์ํด ์คํ๋ง ๋ถํธ๋ ์ค์ ์ ์ต์ํํ๊ณ ๊ฐ๋ฐ ์์ฐ์ฑ์ ๋์ด๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Spring Boot ์ ํน์ง
Spring Boot
Spring Boot ์ค์น
Eclipse Spring Boot ์ค์น
Eclipse Spring Boot ํ๋ก์ ํธ ์์ฑ
Spring Boot ์ค์น ๋ฐ ํ๋ก์ ํธ ์์ฑ
Spring Boot ํ๋ก์ ํธ ๊ตฌ์กฐ
์คํ๋ง ๋ถํธ ํ๋ก์ ํธ ๊ตฌ์กฐ
sample/ โโโ
src/ โ โโโ
main/ โ โ โโโ
java/ โ โ โ โโโ
com/ โ โ โ โโโ
joeun/ โ โ โ โโโ
sample/ โ โ โ โโโ
SampleApplication.java
# ์คํ๋ง ๋ถํธ ์์ ํด๋์ค
โ โ โ โโโ
ServletInitializer.java
# ์๋ธ๋ฆฟ ์ค์ ์ด๊ธฐํ ํด๋์ค
โ โ โ โ โโโ
resources/ โ โ โโโ
application.properties
# ํ๋ก์ ํธ ์ค์ ํ์ผ
โ โ โโโ
static/
# ์ ์ ํ์ผ (css, js, img)
โ โ โโโ
templates/
# ๋ทฐ ํ์ผ (html, jsp)
โ โ โโโ
build.gradle
# ๋น๋ ์ค์ ํ์ผ
Spring Boot ํ๋ก์ ํธ ๊ตฌ์กฐ
Live Reload
โข
ํฌ๋กฌ ์น ์คํ ์ด์์ ๋ผ์ด๋ธ ๋ฆฌ๋ก๋ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ฃผ๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ค์นํด๋ด ๋๋ค.
์๋ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ LiveReload ์น ์คํ ์ด๋ก ์ด๋ํฉ๋๋ค.
LiveReload
Provides Chrome browser integration for the official LiveReload apps (Mac & Windows) and third-parties like guard-livereload andโฆ
[Chrome ์ ์ถ๊ฐ] ๋ฒํผ์ ๋๋ฌ ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ค์นํฉ๋๋ค.
Live Reload
Spring Boot 2์์ 3 ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
Spring Boot 3.0 Migration Guide
Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.
Spring Boot 2.7 โ> 3.x ๋ง์ด๊ทธ๋ ์ด์
์คํ๋ง ๋ถํธ
์์กด์ฑ ์ฃผ์ (DI; Dependency Injection)
์์กด์ฑ ์ฃผ์ (DI)์ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์ค์ํ ๊ฐ๋ ์ ๋๋ค. DI๋ ์ปดํฌ๋ํธ ๊ฐ์ ์์กด์ฑ์ ์ธ๋ถ์์ ์ฃผ์ ํจ์ผ๋ก์จ ๋์จํ ๊ฒฐํฉ์ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ์ ์ฐ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์คํ๋ง DI
์คํ๋ง ํ๋ ์์ํฌ์์๋ DI๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์คํ๋ง DI ์ปจํ ์ด๋๊ฐ ๊ฐ์ฒด ๊ฐ์ ์์กด์ฑ์ ๊ด๋ฆฌํ๊ณ ํ์ํ ์์กด ๊ฐ์ฒด๋ฅผ ์ฃผ์ ํด์ค๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ๋ถ๋ถ์ ์ง์คํ ํ์ ์์ด ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์์ต๋๋ค.
Ioc ์ปจํ ์ด๋
Ioc ์ปจํ ์ด๋๋ Inversion of Control(์ ์ด์ ์ญ์ ) ์ปจํ ์ด๋๋ก, ์คํ๋ง ํ๋ ์์ํฌ์ ํต์ฌ์ ๋๋ค. Ioc ์ปจํ ์ด๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑ ์์๋ค์ ๊ด๋ฆฌํ๋ฉฐ, ๊ฐ์ฒด์ ์์ฑ๊ณผ ์์กด์ฑ ์ฃผ์ ์ ๋ด๋นํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ์ ์์กด์ฑ์ ์ง์ ๊ด๋ฆฌํ์ง ์์๋ ๋๋ฏ๋ก ๊ฐ๋ฐ ์์ฐ์ฑ๊ณผ ์ ์ง ๋ณด์์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์์กด์ฑ ์ฃผ์ (DI)
HTTP
HTTP(Hypertext Transfer Protocol)๋ ์น ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ํต์ ํ๋กํ ์ฝ์ ๋๋ค.
HTTP(Hypertext Transfer Protocol)๋ ์น ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ํต์ ํ๋กํ ์ฝ์ ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์น ํ์ด์ง๋ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ฉด, ์๋ฒ๋ ๊ทธ์ ๋ํ ์๋ต์ ์ ๊ณตํฉ๋๋ค. HTTP๋ ์ฃผ๋ก ์น ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ ๊ฐ์ ํต์ ์ ์ฌ์ฉ๋๋ฉฐ, HTML ๋ฌธ์, ์ด๋ฏธ์ง, ๋์์ ๋ฑ์ ๋ฆฌ์์ค๋ฅผ ์ ์กํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
HTTP๋ ํด๋ผ์ด์ธํธ-์๋ฒ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ , ์๋ฒ๋ ์ด๋ฅผ ๋ฐ์ ์ฒ๋ฆฌํ ํ HTTP ์๋ต ๋ฉ์์ง๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํํฉ๋๋ค. ์์ฒญ ๋ฉ์์ง์๋ ์์ฒญํ๋ ๋ฆฌ์์ค์ ๊ฒฝ๋ก, ๋ฉ์๋(GET, POST, PUT ๋ฑ), ํค๋ ์ ๋ณด ๋ฑ์ด ํฌํจ๋ ์ ์์ต๋๋ค. ์๋ต ๋ฉ์์ง์๋ ์ํ ์ฝ๋, ํค๋ ์ ๋ณด, ์์ฒญํ ๋ฆฌ์์ค์ ๋ด์ฉ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
HTTP๋ ์ํ๋ฅผ ์ ์งํ์ง ์๋(stateless) ํ๋กํ ์ฝ์ด๊ธฐ ๋๋ฌธ์, ๊ฐ๊ฐ์ ์์ฒญ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ์ด๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๊ธฐ์ตํ์ง ์๊ณ , ํด๋ผ์ด์ธํธ์์ ํต์ ์ด ๊ฐ๊ฐ์ ์์ฒญ์ ๋ํด ์๋กญ๊ฒ ์ด๋ฃจ์ด์ง์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ผ ํ ๊ฒฝ์ฐ, ๋งค๋ฒ ์ธ์ฆ ์ ๋ณด๋ฅผ ํจ๊ป ์ ์กํด์ผ ํฉ๋๋ค.
HTTP
HTTP X SpringBoot -
RestTemplate
&
WebClient
HTTP ์์ฒญ ๋ฉ์์ง์ ์๋ฐ ์น๊ฐ๋ฐ
โข
HTTP ๋ฉ์์ง์ ํค๋ ์ ๋ณด์๋ ์์ฒญํ๋ ๋ฆฌ์์ค์ ํ์ , ๊ธธ์ด, ์ธ์ฝ๋ฉ ๋ฐฉ์ ๋ฑ์ ์ ๋ณด๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.
โข
Java
์์๋
HttpURLConnection
ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ HTTP ์์ฒญ์ ๋ณด๋ผ ์ ์์ต๋๋ค. ์์ ์ฝ๋์์๋ GET ์์ฒญ์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
โข
๋ํ,
Spring Boot
์์๋
RestTemplate
๊ณผ
WebClient
๋ฅผ ์ฌ์ฉํ์ฌ HTTP ์์ฒญ์ ๋ณด๋ผ ์ ์์ต๋๋ค.
HTTP X SpringBoot -
RestTemplate
&
WebClient
Request
: HTTP Request(์์ฒญ)๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ๋ณด๋ด๋ ์์ฒญ ๋ฉ์์ง๋ก, ์น ๋ฆฌ์์ค์ ๋ํ ๋์(GET, POST, ๋ฑ) ๋ฐ ํด๋น ๋ฆฌ์์ค์ ํจ๊ป ์ ๋ฌ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ํฉ๋๋ค.
Overview
Request
Response
: ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด๋ ์๋ต ๋ฉ์์ง๋ก, ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํ ์ํ ๋ฐ ํด๋น ์์ฒญ๊ณผ ํจ๊ป ์ ๋ฌ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ํฉ๋๋ค.
Overview
โข
์คํ๋ง ๋ถํธ๋ก ์๋ฒ์์ ์๋ตํ๊ธฐ
โข
@RestController
Response
Thunder Client
๊ฒฝ๋ Rest API ํด๋ผ์ด์ธํธ ์ต์คํ ์ ์ผ๋ก, Visual Studio Code์ฉ์ผ๋ก ์ค๊ณ๋ ๊ฐ๋จํ๊ณ ๊น๋ํ ๋์์ธ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
marketplace.visualstudio.com
Overview
โข
Send
โข
Activity
Thunder Client
MyBatis
MyBatis ๋ํด์ ์์๋ณด๊ณ ๊ฐ๋จํ๊ฒ ๊ฒ์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์ค์ต๊น์ง ์งํํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
โข
Mybatis
โข
ํ๋ก์ ํธ ๊ตฌ์กฐ
โข
์คํ๋ง ๋ถํธ์์ MyBatis ์ฌ์ฉ
โข
์์กด์ฑ ์ถ๊ฐ
โข
๋ง์ด๋ฐํฐ์ค ์ค์ ํ์ผ - mybatis-config.xml
โข
ํ๋ก์ ํธ ์ค์ - application.properties
โข
DB ๊ตฌ์ถ
โข
๋ก์ง ์์ฑ
MyBatis
๊ฒ์ํ
REST (Representational State Transfer)
์ํ ํํ ์ ์ก ์ํคํ ์ฒ
present [prษชหzent]
: ๋ณด์ฌ์ฃผ๋ค
represent [หreprษชหzent]
: ๋ค์ ๋ณด์ฌ์ฃผ๋ค, ๋์ ํํํ๋ค
re-(๋ค์) + present(๋ณด์ฌ์ฃผ๋ค)
๋ค์ ๋ณด์ฌ์ฃผ๋ค, ๋ํํ๋ค, ๋๋ณํ๋ค
representational [ หreprษชzenหteษชสnl ]
: ํํํ๋, ๋ณด์ฌ์ฃผ๋
REST
๊ฐ์
โข
MVC ํจํด
โข
MVC vs REST
โข
MVC๋ ์ธ์ ์ฐ์ด๋?
โข
REST๋ ์ธ์ ์ฐ์ด๋?
โข
MVC model1
โข
MVC model2
โข
Spring Boot์์์ MVC
MVC
์ฃผ์ ์ด๋ ธํ ์ด์ ์ ๋ฆฌ
โข
์์กด์ฑ ์ด๋ ธํ ์ด์
โข
์์ฒญ ๊ฒฝ๋ก ๋งคํ ์ด๋ ธํ ์ด์
โข
์์ฒญ ํ๋ผ๋ฏธํฐ ์ด๋ ธํ ์ด์
@Component
์คํ๋ง ์ปจํ ์ด๋์๊ฒ ํด๋น ํด๋์ค๊ฐ ์ปดํฌ๋ํธ์์ ์๋ ค์ค๋๋ค. ๋ณดํต ์ผ๋ฐ์ ์ธ ํด๋์ค์ ์ฌ์ฉ๋๋ฉฐ, ์๋์ผ๋ก ๊ฒ์ํ์ฌ Bean์ผ๋ก ๋ฑ๋กํฉ๋๋ค.
์ฃผ์ ์ด๋ ธํ ์ด์ ์ ๋ฆฌ
Springdoc OpenApi
API ๊ฐ๋ฐ ๋ฌธ์ํ ๋๊ตฌ
์ข ๋ฅ
โข
Swagger
Swagger (OpenAPI)
Springdoc OpenApi
Pagination
1.
Page ๊ฐ์ฒด ์ ์
2.
์ฟผ๋ฆฌ ์ ์ฉ
3.
ํ์ด์ง๋ค์ด์
Page ๊ฐ์ฒด ์ ์
ํ์ด์ง ๋จ์๋ก ์ฟผ๋ฆฌ ์ ์ฉ
Pagination
์คํ๋ง ๋ถํธ 3 ์ด์
์ด๋ฆ
ํ๊ทธ
ํ ์คํธ
@PathVariable,
ย
@RequestParam ํ๋ผ๋ฏธํฐ ์๋ ๋งคํ
Open
v3.2~
์คํ๋ง ๋ถํธ 3.2 ๋ฒ์ ์ดํ ๋ถํฐ๋, ํด๋น ์ด๋ ธํ ์ด์ ์์ ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ์๋ ๋งคํํ์ง ์๋๋ค. ํ๋ผ๋ฏธํฐ ๋ช ์ ๋ฐ๋์ ๋ช ์ํด์ฃผ์ด์ผํ๋ค.
Open
์คํ๋ง ์ด๋ ธํ ์ด์ ์ฌ์