์ค๋ ํ ๊ณต๋ถ ๐ง
- ์ฌํ Spring 3์ฃผ์ฐจ ๊ฐ์ ๋ฃ๊ธฐ
- TIL ๋ธ๋ก๊ทธ ์์ฑ
์ค๋ ์ป์ ๋ด์ฉ ์ ๋ฆฌ โ๏ธ
์ฌํ Spring ๊ฐ์ ๋ฃ๊ธฐ
- @PostConstruct, @PreDestroy annotation์ ํ์ค annotation์ด๊ธฐ ๋๋ฌธ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ฉ์ด ๋ถ๊ฐ๋ฅํ๋ค.
→ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ด๊ธฐํ, ์ข ๋ฃ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ @Bean์ initMethod, destroyMethod๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. - Bean Scope
- Spring ์ปจํ ์ด๋์์ Bean์ด ์ด๋ป๊ฒ ์์ฑ๋๊ณ ๊ด๋ฆฌ๋๋์ง๋ฅผ ์ ์ํ๋ ๊ฐ๋ ์ด๋ค.
- @ExceptionHandler annotation์ด ์ ์ธ๋์ง ์์ ์ปจํธ๋กค๋ฌ์ ์์ธ ์ฒ๋ฆฌ๋ ๋ถ๊ฐ๋ฅํ๋ค.
Annotation | ์ฉ๋ | ๋ฐํ ํ์ | ์์ ์ฒ๋ฆฌ ๋ฒ์ |
@ExceptionHandler | ํน์ ์ปจํธ๋กค๋ฌ ๋ด์์ ๋ฐ์ํ ์์ธ ์ฒ๋ฆฌ | ๋ทฐ ์ด๋ฆ, String ๋ฑ |
๋จ์ผ ์ปจํธ๋กค๋ฌ ๋ด |
@ControllerAdvice | ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ๋ฐ์ํ ์์ธ ์ฒ๋ฆฌ | ๋ทฐ ์ด๋ฆ, String ๋ฑ |
๋ชจ๋ ์ปจํธ๋กค๋ฌ์ ์ ์ญ ์ ์ฉ |
@RestControllerAdvice | REST API์์ ๋ฐ์ํ ์์ธ๋ฅผ JSON ํ์์ผ๋ก ์ฒ๋ฆฌ | ResponseEntity (JSON) |
๋ชจ๋ ์ปจํธ๋กค๋ฌ์ ์ ์ญ ์ ์ฉ (RESTful ์๋น์ค) |
๊ฐ์๋ฅผ ๋ฃ๋ค๊ฐ ๊ถ๊ธํ๋ ์
500 Error๋ ๋ฐํ๋์ง ์๋ ๊ฒ์ด ์ข์ ์๋ฒ์ด๋ค. ๊ทธ ์ด์ ๋ ๋ฌด์์ผ๊น??
- ์ฌ์ฉ์ ๊ฒฝํ(UX)์ ์ ํ
- ๋ฌธ์ ์ ๋ถ๋ช ํ์ฑ
- ๋ณด์ ๋ฌธ์
- ์๋ฒ ๊ด๋ฆฌ์ ๋ฏธํกํจ์ ์๋ฏธ
- ๋์ฒด ์๋ต ์ ๊ณต ๊ฐ๋ฅ
- ์์ธ ์ฒ๋ฆฌ์ ๋ก๊น
@RestControllerService annotation์ ๊ณตํต๋ ์๋ต ํํ๋ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์์๊น??
์ผ๋ฐ์ ์ธ ๊ณตํต ์๋ต ๊ตฌ์กฐ
{
"status": "SUCCESS", // ๋๋ "FAIL", ์์ฒญ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ๋ํ๋
"code": 200, // HTTP ์ํ ์ฝ๋
"message": "์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์์ต๋๋ค.", // ์๋ต์ ๋ํ ์ค๋ช
"data": { // ์์ฒญ์ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ํฌํจ
// ์ค์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ ์์ญ
}
}
@MappedSuperClass์ @Embeddable์ ๋ค๋ฅธ ์ ์ด ๋ญ๊น??
@MappedSuperclass
Entity ํด๋์ค๋ค ๊ฐ์ ๊ณตํต๋๋ ๋งคํ ์ ๋ณด๋ฅผ ์์๋ฐ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
ํน์ง
- ์ง์ ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ๋ก ๋งคํ๋์ง ์๋๋ค.
- ์์๋ฐ๋ Entity ํด๋์ค์์๋ง ์ฌ์ฉ๋๊ณ , ํ ์ด๋ธ์ ๋งคํ๋ ์ปฌ๋ผ์ด ํฌํจ๋๋ค.
- ๋ถ๋ชจ ํด๋์ค์ ์ ์ธ๋ ํ๋๋ค์ด ์์ ํด๋์ค์ Entity ํ ์ด๋ธ์ ์ปฌ๋ผ์ผ๋ก ์ถ๊ฐ๋๋ค.
@Embeddable
๊ฐ์ฒด๋ฅผ ๊ฐ ํ์
์ผ๋ก ๋งคํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. ํ Entity ์์์ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ปฌ๋ผ์ผ๋ก ์๋ฒ ๋ํ์ฌ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๋ค.
ํน์ง
- ๊ฐ ํ์ ๊ฐ์ฒด๋ฅผ ์ ์ํ ๋ ์ฌ์ฉ๋๋ค.
- ํด๋น ํด๋์ค๋ ๋ณ๋์ ํ ์ด๋ธ๋ก ๋งคํ๋์ง ์๊ณ , ์ด๋ฅผ ํฌํจํ๋ Entity ํ ์ด๋ธ์ ์ปฌ๋ผ์ผ๋ก ๋งคํ๋๋ค.
- ๋ณตํฉ์ ์ธ ๊ฐ ํ์ ์ ํํํ๊ธฐ์ ์ ํฉํ๋ค.
๋์ ์ฐจ์ด์
ํน์ง | ์ฉ๋ | ํ ์ด๋ธ ๋งคํ ์ฌ๋ถ | ์ฌ์ฉ ๋ฐฉ์ | ๋ฐ์ดํฐ ๊ตฌ์กฐ ํํ |
@MappedSuperclass | ๊ณตํต ๋งคํ ์ ๋ณด ์์ | ๋ถ๋ชจ ํด๋์ค ์์ฒด๋ ํ ์ด๋ธ๋ก ๋งคํ๋์ง ์์ | Entity ๊ฐ ์์ ๊ตฌ์กฐ์์ ์ฌ์ฉ | Entity์ ๊ณตํต๋ ํ๋๋ฅผ ์์๋ฐ์ ํ ์ด๋ธ์ ๋งคํ |
@Embeddable | ๊ฐ ํ์ ์ Entity์ ํฌํจ | ๋ณ๋์ ํ ์ด๋ธ๋ก ๋งคํ๋์ง ์๊ณ Entity ํ ์ด๋ธ์ ํฌํจ | ๊ฐ ํ์ ๊ฐ์ฒด๋ฅผ ํํํ๊ณ ์ฌ์ฉํ ๋ ์ฌ์ฉ | ๊ฐ ํ์ ํ๋๋ฅผ ์๋ฒ ๋ํ์ฌ Entity ๋ด๋ถ์ ํฌํจ |
@Embeddable๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ๊ฐ ํ์
์ ํํ
- ํ Entity ์์์ ๊ฐ ํ์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- ์ฌ์ฌ์ฉ์ฑ
- ๋์ผํ ๊ฐ ํ์ ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ Entity์์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- ์บก์ํ์ ๊ฐ๋
์ฑ
- ๊ฐ ํ์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์บก์ํํ์ฌ Entity๋ฅผ ๋ ๊น๋ํ๊ณ ์ฝ๊ธฐ ์ฝ๊ฒ ์ค๊ณํ ์ ์๋ค.
- ํ
์ด๋ธ ์ค๊ณ ๋จ์ํ
- Entity ํ ์ด๋ธ์ ์ผ๋ถ๋ก ํฌํจ๋๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ํ ์ด๋ธ์ ์์ฑํ์ง ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ๊ฐ ๋จ์ํด์ง๋ค.
์ค๋ ํ๋ฃจ ์๊ฐ ์ ๋ฆฌ โ๏ธ
์ํด๊ฐ ๋ฐ์๋ค!!๋ผ๋ ์๊ฐ์ผ๋ก ์ค๋ ์ด๊น ๋ง๊น๋ฅผ ๊ณ์ ๊ณ ๋ฏผํ๋ ๊ฒ ๊ฐ๋ค..
ํ์ง๋ง ๋ฎ์ ์ ์กฐ๊ธ ์๊ณ ๋ฐ๋ก ๊ฐ์๋ฅผ ๋ฃ๊ธฐ ์์ํ๋ค. ๋ฌผ๋ก ์ง์ค๋ ฅ์ด ๊ทธ๋ ๊ฒ ์ข์ง๋ ์์์ ๊ฐ์๋ฅผ ๋ค ๋ฃ๊ณ ๋๋๊น ๋จธ๋ฆฟ์์ ๋จ์ ๋ด์ฉ์ด ๊ฑฐ์ ์์๋ค.. ๊ทธ๋๋ ์ฌ๋ ๋ ๊ฐ์๋ฅผ ๋ค์๋ค๋ ๊ฒ์ ์์๋ฅผ ๋์!
๊ทธ๋ฆฌ๊ณ ๊ฐ์ ๋ค์ผ๋ฉด์ ๊ถ๊ธํ๋ ๋ถ๋ถ๋ค์ ๋ฐ๋ก ์ ๋ฆฌํ๋ค! ์ค์ํ ๋ถ๋ถ์ธ์ง๋ ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ด๊ฐ ์ดํด๊ฐ ์ ๋๋ ๋ถ๋ถ์ ์ง๊ณ ๋์ด๊ฐ์ผ ํ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ์ต๊ทผ์๋ ๋ ธ์ ์ 1์ฐจ๋ก ๋จผ์ ์ ๋ฆฌ๋ฅผ ํ ํ, 2์ฐจ๋ก TIL ๋๋ ๋ธ๋ก๊ทธ์ ๋ฐ๋ก ์ ๋ฆฌํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์๋ค! ์ ๋ฆฌํ๋ฉด์ ๋ด ๊ฒ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ง๋ง ์ฝ์ง๋ ์์ ๊ฒ ๊ฐ๋ค..! ์ด๋ ๊ฒ ์ ๋ฆฌํด ๋๋ฉด ์ธ์ ๊ฐ๋ ๋ด ๊ฒ์ผ๋ก ๋ง๋ค ์ ์์ง ์์๊น ์๊ฐํ๋ค!
์ฌ๋ ๋ ์๋ ์๊ฐ๋ณด๋ค ๋ง์ ๊ฒ์ ํ ๋๋์ด๋ค(?) ๋ฌผ๋ก ์๋ ์๋ ์๋ค..
๊ทธ๋๋ ๋ญ๋ผ๋ ํ ๊ฒ์ ๋ฟ๋ฏํ๋ค!! ๋จ์ ์๊ฐ๋ ์ ๋ณด๋ด๊ณ ๋ด์ผ๋ถํฐ ๋ 12์๊ฐ์ฉ ์ด์ฌํ ๊ณต๋ถํด์ผ์ง!
์ปจ๋์
์ด๋ ์ฒด๋ ฅ ์ ๊ด๋ฆฌํ๋ฉด์ ์ด๋ฒ ์ฃผ๋ ์ ๋ง๋ฌด๋ฆฌํ์ ๐
๋ด์ผ ๊ณํ โฐ
- ๊ฐ์ธ ๊ณผ์ ํ์ ๋๋ด๊ธฐ
- ํ ์คํธ ์ฝ๋ ๋ณต์ต
- TIL ๋ธ๋ก๊ทธ ์์ฑ
+ ์ถ๊ฐ๋ก ๊ณํ์ด ๋ ์ถ๊ฐ๋ ์๋ ์์ด์~_~
'Today I Learned(TIL) > ์คํ๋ฅดํ ๋ด์ผ๋ฐฐ์์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ TIL ] ์ฃผํน๊ธฐ ์ฌํ_Day 4 (1) | 2025.01.02 |
---|---|
[ TIL ] ์ฃผํน๊ธฐ ์ฌํ_Day 2 (0) | 2024.12.31 |
[ TIL ] ์ฃผํน๊ธฐ ์ฌํ_Day 1 (1) | 2024.12.30 |
๊ธฐ์ด ํ๋ก์ ํธ_Day 5 (0) | 2024.12.26 |
๊ธฐ์ด ํ๋ก์ ํธ_Day 7 (2) | 2024.12.26 |