ALOHA CLASS
/
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 μ€μΉ (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μΌλ‘ λ±λ‘ν©λλ€.
μ£Όμ μ΄λ Έν μ΄μ μ 리
μ€νλ§ λΆνΈ 3 μ΄μ
μ΄λ¦
νκ·Έ
ν μ€νΈ
@PathVariable,Β @RequestParam νλΌλ―Έν° μλ 맀ν
Open
v3.2~
μ€νλ§ λΆνΈ 3.2 λ²μ μ΄ν λΆν°λ, ν΄λΉ μ΄λ Έν μ΄μ μμ νλΌλ―Έν° μ΄λ¦μ μλ 맀ννμ§ μλλ€. νλΌλ―Έν° λͺ μ λ°λμ λͺ μν΄μ£Όμ΄μΌνλ€.
Open
μ€νλ§ μ΄λ Έν μ΄μ μ¬μ