๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€199

[ TIL ] ์ฃผํŠน๊ธฐ ์‹ฌํ™”_Day 4 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ๊ฐœ์ธ ๊ณผ์ œ ํ•„์ˆ˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ˆ˜์ค€๋ณ„ ํ•™์Šต๋ฐ˜ ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ ์„ธ์…˜ ๋“ฃ๊ธฐํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์‹ค์Šต ์„ธ์…˜ ๋“ฃ๊ธฐTIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ๊ฐœ์ธ ๊ณผ์ œ ํ•„์ˆ˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํŠœํ„ฐ๋‹˜ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ํ•ด์„œ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋งSetter๋กœ ๋˜์–ด ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ช… ๋ฐ”๊พธ๊ธฐComment์™€ Todo Entity์˜ setMember, serTodo ๋ฉ”์„œ๋“œ๋ฅผ updateMember, updateTodo๋กœ ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค.Comment ์ƒ์„ฑ์ž์—์„œ User์™€ Todo๋ฅผ ๊ฐ™์ด ๋ฐ›์œผ๋ฉด Comment๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋‘ Entity๋ฅผ ๋„ฃ์ง€ ์•Š๋Š” ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.update ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์ƒ์„ฑ์ž ์•ˆ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์Œ์œผ๋กœ์จ ๋นผ๋จน๋Š” ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ–ˆ๋‹ค.์ถ”๊ฐ€์ ์œผ๋กœ Todo์˜ ์ƒ์„ฑ์ž์—๋„ Member๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜.. 2025. 1. 2.
[ TIL ] ์ฃผํŠน๊ธฐ ์‹ฌํ™”_Day 3 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ์‹ฌํ™” Spring 3์ฃผ์ฐจ ๊ฐ•์˜ ๋“ฃ๊ธฐTIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ์‹ฌํ™” Spring ๊ฐ•์˜ ๋“ฃ๊ธฐ@PostConstruct, @PreDestroy annotation์€ ํ‘œ์ค€ annotation์ด๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.→ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ดˆ๊ธฐํ™”, ์ข…๋ฃŒ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” @Bean์˜ initMethod, destroyMethod๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.Bean ScopeSpring ์ปจํ…Œ์ด๋„ˆ์—์„œ Bean์ด ์–ด๋–ป๊ฒŒ ์ƒ์„ฑ๋˜๊ณ  ๊ด€๋ฆฌ๋˜๋Š”์ง€๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.@ExceptionHandler annotation์ด ์„ ์–ธ๋˜์ง€ ์•Š์€ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.Annotation์šฉ๋„๋ฐ˜ํ™˜ ํ˜•์‹์˜ˆ์‹œ ์ฒ˜๋ฆฌ ๋ฒ”์œ„@ExceptionHandlerํŠน์ • ์ปจํŠธ๋กค๋Ÿฌ ๋‚ด์—์„œ ๋ฐœ์ƒํ•œ.. 2025. 1. 1.
[ TIL ] ์ฃผํŠน๊ธฐ ์‹ฌํ™”_Day 2 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ์‹ฌํ™” Spring 1์ฃผ์ฐจ ๊ฐ•์˜ ๋“ฃ๊ธฐ → ์–ด์ œ ๋“ค์—ˆ๋˜ ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ด์–ด์„œ ์ˆ˜๊ฐ•์‹ฌํ™” Spring 2์ฃผ์ฐจ ๊ฐ•์˜ ๋“ฃ๊ธฐํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ด๋ก  ์„ธ์…˜ ๋“ฃ๊ธฐ์—ฐ๋ง ๊ธฐ๋… ๋ผ๋””์˜ค ๐ŸคฉTIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ์‹ฌํ™” Spring ๊ฐ•์˜ ๋“ฃ๊ธฐProxy ๊ฐ์ฒด๋Š” ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๋„์›€์„ ๋ฐ›์•„์•ผ๋งŒ ์‹ค์ œ Entity์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.LazyInitializationException → ์‹ค์ œ JPA ๊ฐœ๋ฐœ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ๋งˆ์ฃผ์น˜๋Š” Exception์˜์†์„ฑ ์ „์ด๋Š” ์ง€์—ฐ ๋กœ๋”ฉ, ์ฆ‰์‹œ ๋กœ๋”ฉ๊ณผ๋Š” ์•„๋ฌด ๊ด€๋ จ์ด ์—†๋‹ค.๊ฐ•์˜๋ฅผ ๋“ฃ๋‹ค๊ฐ€ ๊ถ๊ธˆํ–ˆ๋˜ ์ FetchType.LAZY์˜ ๊ฐœ๋… ์žก๊ธฐFetchType.LAZY: ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์ ‘๊ทผํ•  ๋•Œ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ด€๋ จ๋œ Entity๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์กฐํšŒ.. 2024. 12. 31.
[ TIL ] ์ฃผํŠน๊ธฐ ์‹ฌํ™”_Day 1 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ํ”„๋กœ์ ํŠธ ๋ฐœ์ œ ๋“ฃ๊ธฐ์‹ฌํ™” Spring 1์ฃผ์ฐจ ๊ฐ•์˜ ๋“ฃ๊ธฐ์ˆ˜์ค€๋ณ„ ํ•™์Šต๋ฐ˜ ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ ์„ธ์…˜ ๋“ฃ๊ธฐํŠœํ„ฐ๋‹˜์˜ ๋ฏธ๋‹ˆ ์„ธ์…˜(์ด๋ ฅ์„œ ํŠน๊ฐ•) ๋“ฃ๊ธฐTIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ์‹ฌํ™” Spring 1์ฃผ์ฐจ ๊ฐ•์˜HttpMessageConverter → ์šฐ์„  ์ˆœ์œ„์™€ ๋™์ž‘ ์ˆœ์„œArgumentResolverRequestMappingHandlerAdapterReturnValueHandlerTypeConverterํƒ€์ž… ๋ณ€ํ™˜Converter Interface์ˆ˜์ค€๋ณ„ ํ•™์Šต๋ฐ˜ - ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ ์„ธ์…˜JWT & ์„ธ์…˜์ด๋ ฅ์„œ ๋ฏธ๋‹ˆ ์„ธ์…˜๋‚จ๋“ค๊ณผ๋Š” ๋‹ค๋ฅธ ๋ชจ์Šต์„ ๋ณด์—ฌ์ค˜์•ผ ํ•œ๋‹ค. ์ฐจ๋ณ„์ ์„ ๋‘ฌ์•ผ ํ•œ๋‹ค.ํ‰๊ฐ€์ž์˜ ์ƒํ™ฉ์„ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค.์• ๋งคํ•œ ์‚ฌ๋žŒ์€ ๋ฝ‘์ง€ ์•Š๋Š”๋‹ค.๋ฌด์–ธ๊ฐ€๋ฅผ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ทผ๊ฑฐ๊ฐ€ ํ•จ๊ป˜ ๋˜์–ด์•ผ ํ•œ๋‹ค.๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ๋ฅผ ์ ๋Š” ๊ฒƒ๋„ ๊ต‰.. 2024. 12. 30.
๋‰ด์Šค ํ”ผ๋“œ ํ”„๋กœ์ ํŠธ_๊ฐœ์ธ KPT ํšŒ๊ณ  ๋‰ด์Šค ํ”ผ๋“œ ํ”„๋กœ์ ํŠธ Keep: ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์œ ์ง€ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ถ€๋ถ„์ฒด๊ณ„์ ์ธ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰๋‚ด ์—ญ๋Ÿ‰์„ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ณ  ๋ฌด๋ฆฌํ•˜์ง€ ์•Š๋Š” ๋ฒ”์œ„ ๋‚ด์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ง„ํ–‰ํ–ˆ๋‹ค.์˜๊ฒฌ ๊ฒฝ์ฒญ๊ณผ ํ˜‘๋ ฅ์ ์ธ ๋ถ„์œ„๊ธฐํŒ€์›๋“ค์˜ ์˜๊ฒฌ์„ ์ ๊ทน์ ์œผ๋กœ ๊ฒฝ์ฒญํ•˜๋ฉด์„œ ํ˜‘์—…์— ์žˆ์–ด ๊ธ์ •์ ์ธ ๋ถ„์œ„๊ธฐ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.์งˆ๋ฌธ์— ๋Œ€ํ•œ ์นœ์ ˆํ•œ ๋‹ต๋ณ€ํŒ€์›์ด ๋ชจ๋ฅด๋Š” ์ ์„ ๋ฌผ์–ด๋ดค์„ ๋•Œ, ์•„๋Š” ๋ฒ”์œ„ ๋‚ด์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋ฉด์„œ ์ง€์‹์„ ๊ณต์œ ํ•˜๊ณ  ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.์ฑ…์ž„๊ฐ์„ ๊ฐ€์ง€๊ณ  ๋งก์€ ์—ญํ•  ์™„์ˆ˜๋‚ด๊ฐ€ ๋งก์€ ํŒŒํŠธ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ๋งˆ๋ฌด๋ฆฌํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋งˆ๋ฌด๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. Problem: ๊ฐœ์„ ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์˜๊ฒฌ ์ „๋‹ฌ ๋ถ€์กฑ๋ฌธ์ œ์ : ๋‚ด ์˜๊ฒฌ์„ ํŒ€์›๋“ค์—๊ฒŒ ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.ํ•ด๊ฒฐ ๋ฐฉ์•ˆ:์˜๊ฒฌ์„ ์ž˜ ์ •๋ฆฌํ•ด์„œ ์ „๋‹ฌํ•˜๋Š” ์—ฐ์Šต์„ ๊พธ์ค€ํžˆ ํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ๊ฐ„๋‹จํ•œ ๋ฌธ์„œ๋‚˜ ์ž๋ฃŒ.. 2024. 12. 29.
๋‰ด์Šค ํ”ผ๋“œ ํ”„๋กœ์ ํŠธ_ํŒ€ KPT ํšŒ๊ณ  ๋‰ด์Šค ํ”ผ๋“œ ํ”„๋กœ์ ํŠธ Keep: ์ด๋ฒˆ ๊ณผ์ œ์—์„œ ์œ ์ง€ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ถ€๋ถ„์—…๋ฌด ๋ถ„๋‹ดํŒ€์› ๊ฐ„์˜ ์—ญ๋Ÿ‰์„ ํŒŒ์•…ํ•œ ๋’ค, ๋ฌด๋ฆฌํ•˜์ง€ ์•Š๋Š” ์„ ์—์„œ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์—…๋ฌด๋ฅผ ๋ถ„๋‹ดํ–ˆ๋‹ค.๊ฐ ํŒ€์›์ด ์ž์‹ ์˜ ์—ญํ• ์—์„œ ์„ฑ์žฅํ•˜๋ฉฐ ํ”„๋กœ์ ํŠธ ์™„์„ฑ์— ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.์˜์‚ฌ์†Œํ†ต๊ณผ ์ฝ”๋“œ ๋ฆฌ๋ทฐํ™”๋ฉด ๊ณต์œ ์™€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ†ตํ•ด ๊ฐ์ž ๋งก์€ ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ๋Œ€ํ•ด ์†Œํ†ตํ•˜๋ฉฐ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค.์„œ๋กœ์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ๊ตฌํ˜„ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ  ์˜๊ฒฌ์„ ๊ตํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ๋„์›€์ด ๋งŽ์ด ๋˜์—ˆ๋‹ค.์„ค๊ณ„ ๋‹จ๊ณ„์˜ ์ค‘์š”์„ฑ์ดˆ๊ธฐ ์„ค๊ณ„ ๋‹จ๊ณ„์—์„œ ์˜ˆ์ƒ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ ๋ คํ•˜๊ณ  ํŒ€์›๋“ค๊ณผ์˜ ํ˜‘์˜๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์„ค๊ณ„๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.๊ตฌํ˜„ ๋‹จ๊ณ„์—์„œ์˜ ์–ด๋ ค์›€์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋†’์€ ์™„์„ฑ๋„๋ฅผ ์ด๋ฃฐ ์ˆ˜ ์žˆ์—ˆ๋‹ค.์ •๋ณด ๊ณต์œ ํŒ€ ๋‚ด์—์„œ ํ•„์š”ํ•œ ๊ธฐ์ˆ  ์ž๋ฃŒ๋‚˜ ์œ ์šฉํ•œ ํ•™์Šต ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ์„œ๋กœ์˜ ์ง€์‹์„ ํ™•์žฅํ–ˆ.. 2024. 12. 27.