๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ

ํ•ด๋‹น ๊ธ€ 150๊ฑด

"์ฝ๊ธฐ ์ „์šฉ, ์“ฐ๊ธฐ ์ „์šฉ" ์ด๋Ÿฐ ์„ธ๋ฐ€ํ•œ ์ œ์–ด๊ฐ€์ž๋ฐ” ๊ฐ์ฒด๋ž‘ JSON ๋งคํ•‘ ์‚ฌ์ด์—์„œ ๊ฐ€๋Šฅํ•˜๋‹ค.์–ด๋…ธํ…Œ์ด์…˜์˜๋ฏธ์–ด๋””์— ์ฃผ๋กœ ์“ฐ์ด๋Š”์ง€@JsonIgnoreJSON ๊ฐ์ฒด ๋‘˜ ๋‹ค ๋ฌด์‹œ์•„์˜ˆ ์ œ์™ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ (๋กœ๊น…์—๋„ ์•ˆ ๋œธ)@JsonProperty(access = WRITE_ONLY)JSON → ๊ฐ์ฒด๋Š” ํ—ˆ์šฉ, ๊ฐ์ฒด → JSON์€ ์ œ์™ธ๋น„๋ฐ€๋ฒˆํ˜ธ, ํ† ํฐ ๋“ฑ ๋ฏผ๊ฐ ์ •๋ณด ๋ฐ›์„ ๋•Œ@JsonProperty(access = READ_ONLY)๊ฐ์ฒด → JSON์€ ํฌํ•จ, JSON → ๊ฐ์ฒด๋Š” ๋ฌด์‹œ์ž๋™ ์ƒ์„ฑ๋œ ID ๊ฐ™์€ ์‘๋‹ต ์ „์šฉ ํ•„๋“œ ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž…, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์ด๋Ÿฐ ๊ธฐ๋Šฅ ๋งŒ๋“ค ๋• WRITE_ONLY ๋ถ™์—ฌ์ฃผ๋ฉด ๋ณด์•ˆ + ์œ ์ง€๋ณด์ˆ˜ ๋‘˜ ๋‹ค ํ›จ์”ฌ ์ข‹์•„์ง„๋‹ค.์•ž์œผ๋กœ DTO ๋งŒ๋“ค ๋•Œ ๊ผญ ํ•„๋“œ๋งˆ๋‹ค "์š”์ฒญ์šฉ์ธ์ง€ ์‘๋‹ต์šฉ์ธ์ง€" ์ƒ๊ฐํ•˜๊ฒŒ ๋ ๋“ฏ

@Autowired๋ณด๋‹ค ์ƒ์„ฑ์ž ์ฃผ์ž… ๋ฐฉ์‹์„ ๋” ๋งŽ์ด ์“ฐ๋Š” ์ด์œ  ? 1. ๋ถˆ๋ณ€์„ฑ(immutability) ํ™•๋ณด : ์‹ค์ˆ˜ ๋ฐฉ์ง€ ( @Autowired๋Š” ๋‚˜์ค‘์— ๊ฐ’์ด ๋ฐ”๋€Œ๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์—†๋‹ค.) 2. ํ…Œ์ŠคํŠธ๊ฐ€ ์‰ฌ์›Œ์ง : Mock ์ฃผ์ž…ํ•˜๋ ค๋ฉด Spring context ํ•„์š” → ๋А๋ฆผ 3. ์ˆœํ™˜ ์ฐธ์กฐ ๋ฐฉ์ง€์— ๋„์›€ : ์ƒ์„ฑ์ž ์ฃผ์ž…์€ ์ˆœํ™˜ ์ฐธ์กฐ๊ฐ€ ์žˆ์œผ๋ฉด ์• ์ดˆ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜์ง€ ์•Š์Œ → ๋ฌธ์ œ๋ฅผ ์ดˆ๊ธฐ์— ๋ฐ”๋กœ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Œ Spring ๊ณต์‹ ๋ฌธ์„œ์—๋„ ์ƒ์„ฑ์ž ์ฃผ์ž… ๋ฐฉ์‹ ๊ธฐ๋ณธ์œผ๋กœ ์“ฐ๋ผ๊ณ  ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ž์ฃผ์“ฐ์ด๋Š” ์ง๊ฟ์ด @RequiredArgsConstructor๋‹ค.@RequiredArgsConstructor์ด๊ฑธ ํด๋ž˜์Šค์— ๋ถ™์ด๋ฉด,final๋กœ ์„ ์–ธ๋œ ํ•„๋“œ๋“ค๋งŒ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š”..

๋ฐ˜์‘ํ˜•