๊น์ํ - ์คํ๋ง ์ ๋ฌธ : ์ฝ๋๋ก ๋ฐฐ์ฐ๋ ์คํ๋ง ๋ถํธ, ์น MVC, DB ์ ๊ทผ ๊ธฐ์
์์
9์ 4์ผ ์๊ฐ ์์ - ๋ชฉํ๋ 2์ฃผ ์ด๋ด ์๊ฐ ์๋ฃํ๊ธฐ
๋ณต์ตํ ๊ฒธ ์คํ๋ง ์ ๋ฌธ ๊ฐ์๋ถํฐ ๋ค์ ๊ณต๋ถํด๋ณด๊ธฐ๋ก ํ๋ค.
์ด๋ฒ ๊ฐ์ ์๊ฐ ๋๋๋ฉด ๋ก๋๋งต ์์๋๋ก ์๊ฐํ ์์ ์ด๋ค.
๊ทธ๋์ ์๊ฐ๋ง ํ๋ ์์ด๋์ด๋ฅผ ๊ฐ์ธ ํ๋ก์ ํธ๋ผ๋ ๊ตฌํํด๋ณด๊ณ ์ถ๋ค. ๋ฐฐํฌ๊น์ง ํ๋๊ฒ ์ฌํด ๋ชฉํ!
Section 1. ํ๋ก์ ํธ ํ๊ฒฝ์ค์
- ํ๋ก์ ํธ ์์ฑ
- ๋น๋ํ๊ณ ์คํํ๊ธฐ
์๋์ฐ์์ ์คํํ๋ ๋ฐฉ๋ฒ์ ์๋์ ๋ธ๋ก๊ทธ์์ ์ฐธ๊ณ ํ์ฌ ์คํํ์๋ค
- ์๋์ฐ ์ฌ์ฉ์๋ฅผ ์ํ ํ : ์๋์ฐ์์ Git bash ํฐ๋ฏธ๋ ์ฌ์ฉํ๊ธฐ
Section 2. ์คํ๋ง ์น ๊ฐ๋ฐ ๊ธฐ์ด
- ์ ์ ์ปจํ ์ธ
- MVC : Model, View, Controller
- API : ๊ฐ์ฒด ๋ฐํ
@ResponseBody ์ฌ์ฉํ๊ณ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ฉด ๊ฐ์ฒด๊ฐ JSON์ผ๋ก ๋ณํ๋๋ค
ex) name์ spring!!! ๋๊ฒจ์คฌ์ ๋ JSON์ผ๋ก ๋ณํ
{"name":"spring!!!"}
Section 3. ํ์ ๊ด๋ฆฌ ์์ - ๋ฐฑ์๋ ๊ฐ๋ฐ
๋น์ฆ๋์ค ์๊ตฌ์ฌํญ ์ ๋ฆฌ
- ์ปจํธ๋กค๋ฌ, ์๋น์ค, ๋ฆฌํฌ์งํ ๋ฆฌ, ๋๋ฉ์ธ
- Optional -> ์๋ฐ8 ๊ธฐ๋ฅ
- Optional.ofNullable
- Test
@AfterEach
public void afterEach() {
repository.clearStore(); //ํ
์คํธ ์คํ์๋ง๋ค ๋ฐ์ดํฐ clear ํด์ค
}
- TDD
- ํ ์คํธ ์์ฑ์ ์ฌ์ฉ ํจํด
//given
//when
//then
- DI
Section 4. ์คํ๋ง ๋น๊ณผ ์์กด๊ด๊ณ
helloController --> memberService --> memberRepository
1) ์ปดํฌ๋ํธ ์ค์บ : @Service, @Controller, @Repository
2) ์๋ฐ ์ฝ๋๋ก ์คํ๋ง ๋น ๋ฑ๋กํ๊ธฐ
- ์์ฑ์ ์ฃผ์ ๊ถ์ฅ
Section 5. ํ์ ๊ด๋ฆฌ ์์ - ์น MVC ๊ฐ๋ฐ
- ํ ์ปจํธ๋กค๋ฌ ์ถ๊ฐ
- get/post mapping
get : ์กฐํ , post : ๋ฑ๋ก
Section 6. ์คํ๋ง DB ์ ๊ทผ ๊ธฐ์
์ฃผ์ !! - ์คํํ cmd ์ฐฝ ๋๋ฉด DB ์ข ๋ฃ๋๋ฏ๋ก ์ผ๋๊ธฐ
- ์คํ๋ง์ DI (Dependencies Injection)์ ์ฌ์ฉํ๋ฉด ๊ธฐ์กด ์ฝ๋๋ฅผ ์ ํ ์๋์ง ์๊ณ , ์ค์ ๋ง์ผ๋ก ๊ตฌํ
ํด๋์ค๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค
- ํ ์คํธ
@Transactional ์ฌ์ฉํ๋ฉด ํ ์คํธ ์์์ ํธ๋์ญ์ ์์, ๋๋๋ฉด ๋กค๋ฐฑํด์ DB์ ๋ฐ์ดํฐ๊ฐ ๋จ์ง์์ผ๋ฏ๋ก ๋ค์ ํ ์คํธ์ ์ํฅ์ ์ฃผ์ง ์๋๋ค
JPA
- ๊ฐ์ฒด ์ค์ฌ์ ์ค๊ณ๋ก ๊ฐ๋ฐ ์์ฐ์ฑ ๋์ผ ์ ์์
- build.gradle ๊ณผ application.properties ์์ ์ค์ ์ถ๊ฐ
- ์คํ๋ง ๋ฐ์ดํฐ JPA
์ธํฐํ์ด์ค์์ ๊ธฐ๋ณธ์ ์ธ CRUD ์ ๊ณต
Section 7. AOP
- AOP : Aspect Oriented Programming ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ๊ณตํต ๊ด์ฌ ์ฌํญ vs ํต์ฌ ๊ด์ฌ ์ฌํญ ๋ถ๋ฆฌ
- ์ํ๋ ๊ณณ์ ๊ณตํต ๊ด์ฌ ์ฌํญ ์ ์ฉ
- Proxy
Section 8. ๋ค์์ผ๋ก
- ์คํ๋ง ํต์ฌ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ , ๋ฌธ์ ๋ฐ์์ ํ์ํ ๋ถ๋ถ์ ์ฐพ์์ ์ฌ์ฉํ ์ ์๋ ๋ฅ๋ ฅ์ด ์ค์ํ๋ค
10์ 15์ผ ์๊ฐ ์๋ฃ!
< ๋จ์ถํค for window >
- ์์ฑ์, getter/setter ์์ฑ
alt + insert
- ๋ณ์๋ช ๋ณ๊ฒฝ
shift + F6
- ์ฃผ์ ์์ฑ
/** ํ๊ณ Enter
- ์ค๋ฐ๊ฟ
shift + ctrl + Enter
- ๋ฆฌํด๊ฐ ๋ฐํ
ctrl + alt + v
- ๋ฆฌํฉํ ๋ง
ctrl + alt + shift + t
- ๋ฉ์๋ ์์ฑ
ctrl + alt + m
- ํ ์คํธ ์์ฑ
ctrl + shift + t
- static import ๋ก ๋ณํ
alt + Enter
- ์ด์ ์ ์คํํ ๊ฑฐ ๋ค์ ์คํ
shift + F10
- inline refactoring
ctrl + alt + N