์๋ฐ ๊ธฐ๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํ ํ๋ ์์ํฌ. 2000๋ ์ด๋ฐ, ๋๋ฌด ๋ณต์กํ๋ ์๋ฐ ๊ฐ๋ฐ ๋ฐฉ์์ ๋ฐ๊ธฐ๋ฅผ ๋ค๊ณ โ๋ ํธํ๊ฒ ๊ฐ๋ฐํ์โ๋ ์ทจ์ง๋ก ํ์ํ๋ค (POJO : Plain Old Java Object ์งํฅ)
ํต์ฌ ๊ฐ๋
IoC (Inversion of Control, ์ ์ด์ ์ญ์ )
๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๊ณ ๊ด๋ฆฌ X โ ์คํ๋ง์ด ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๋์ ๊ด๋ฆฌ
DI (Dependency Injection, ์์กด์ฑ ์ฃผ์ ) :
ํ์ํ ๊ฐ์ฒด๋ฅผ ์ง์ ๋ง๋ค์ง ์๊ณ , ์คํ๋ง์ด ๋ฃ์ด์ฃผ๋ ๋ฐฉ์ (๊ฐ์ฒด๊ฐ ๊ฒฐํฉ๋ ๋ฎ์์ง)
AOP (Aspect-Oriented Programming, ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ)
๋ก๊น , ๋ณด์, ํธ๋์ ์ ์ฒ๋ผ ์ฌ๋ฌ ๊ณณ์์ ๊ณตํต์ผ๋ก ์ฐ์ด๋ ๊ธฐ๋ฅ์ ํ๊ณณ์์ ๊ด๋ฆฌ
โ ์ค์ ์ด ๋งค์ฐ ๋ณต์ก
์คํ๋ง์ ๋ณต์กํ ์ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ ์คํ๋ง์ ํ์ฅํ. โ์๊ฐํ์ง ๋ง๊ณ ์ผ๋จ ์์(Opinionated)โ ์ด๋ผ๋ ์ฒ ํ์ ๊ฐ์ง๊ณ ์๋ค
Auto Configuration (์๋ ์ค์ )
์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ์ค์ ์ ์คํ๋ง ๋ถํธ๊ฐ ์์์ ์ค๋น (ex db๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ โ ์์์ ์ฐ๊ฒฐ ์ค์ ์ค๋น)
Starter ์์กด์ฑ
ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ฒ์ ์ ์ผ์ผ์ด ๋ง์ถ ํ์ ์์ด, spring-boot-starter-web ํ๋๋ง ์ถ๊ฐํ๋ฉด ์น ๊ฐ๋ฐ์ ํ์ํ ๋ชจ๋ ๋๊ตฌ๊ฐ ํ ๋ฒ์ ์ธํ
๋ด์ฅ ์๋ฒ (Embedded Server)
๋ณ๋์ WAS(Tomcat ๋ฑ)๋ฅผ ์ค์นํ ํ์ ์์ด, ๋ฐ๋ก ์น ์๋น์ค ์คํ ๊ฐ๋ฅ
IntelliJ IDEA ์ค์น ๋ฐ ์ค์
์คํ๋ง ์ปจํ ์ด๋์ IoC/DI
@RestController์ HTTP ๋ฉ์๋ ๋งคํ
MySQL ์ค์น ๋ฐ ์คํ๋ง๋ถํธ ์ฐ๋
JPA ํต์ฌ ๊ฐ๋ ๊ณผ JpaRepository CRUD
์ฐ๊ด๊ด๊ณ ๋งคํ : @ManyToOne / @OneToMany
3๊ณ์ธต ์ํคํ ์ฒ ์์ฑ : ๋ฆฌํฉํ ๋ง๊ณผ Auditing
ํ์ฌ ์ฌ์ฉ์ ์ ๋ณด ํ์ฉ๊ณผ ๊ถํ ์ฒดํฌ
์ ์ญ ์์ธ ์ฒ๋ฆฌ์ ์ ํจ์ฑ ๊ฒ์ฆ
๋ถ๊ฐ ๊ธฐ๋ฅ (CORS, Swagger, ๋ก๊น , ํ๋กํ ๊ด๋ฆฌ)