๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€403

์‹ ๊ทœ ์‹œ์Šคํ…œ ๊ตฌ์ถ•ํ•˜๊ธฐ (feat. MSA, ๋ฐฑ์˜คํ”ผ์Šค) 2023๋…„, ํŒ€ ๋‚ด๋ถ€์—์„œ๋Š” `ํŒฉํ† ๋ฆฌ` ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์‹ ๊ทœ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.๊ฐœ๋ฐœ์ž๋กœ์˜ ๊ฒฝ๋ ฅ์ด ๋งŽ์ง€๋Š” ์•Š์ง€๋งŒ, ๊ฐ€์žฅ ๊ฒฝํ—˜์ด ์ข‹์•˜๋˜ ํ”„๋กœ์ ํŠธ์˜€๊ณ , ์ฒ˜์Œ์œผ๋กœ ํ”„๋กœ์ ํŠธ ๋‹ค์šด(?) ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž‘๋…„ ์ƒ๋ฐ˜๊ธฐ ์ง€๋…ํ•œ ๊ฐœ๋ฐœ ๋ฒˆ์•„์›ƒ์„ ๊ฒช์—ˆ๊ธฐ์—, ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ์—๋Š” ๋งค์šฐ ์†Œ๊ทน์ ์œผ๋กœ ์ž„ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์–ด๋Š ์ •๋„ ๋ฒˆ์•„์›ƒ์„ ํšŒ๋ณตํ•˜๊ณ , ์ ์ฐจ ์ ๊ทน์ ์œผ๋กœ ์ฐธ์—ฌํ•˜๋ฉฐ ์ผ์ •์€ ๋น ๋“ฏํ–ˆ์ง€๋งŒ ๊ต‰์žฅํžˆ ์žฌ๋ฐŒ๊ณ  ์ฆ๊ฒ๊ฒŒ ํ–ˆ์—ˆ๋Š”๋ฐ์š”, ๊ด€๋ จํ•˜์—ฌ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด ๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์‹ ๊ทœ ์‹œ์Šคํ…œ ๋ฐฐ๊ฒฝ๊ธˆ์•ก๊ถŒ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ธฐํ”„ํ‹ฐ์ฝ˜์€, ์ •ํ•ด์ง„ ๊ธˆ์•ก ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ƒํ’ˆ์ž…๋‹ˆ๋‹ค.์œ„ ์Šคํƒ€๋ฒ…์Šค๋ฅผ ์˜ˆ๋กœ ๋“ค์ž๋ฉด 20,000์› ํ•œ๋„ ๋‚ด์—์„œ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์Šคํƒ€๋ฒ…์Šค ๊ธˆ์•ก๊ถŒ ์ƒํ’ˆ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ ๊ธˆ์•ก๊ถŒ ๊ด€๋ จํ•ด.. 2024. 1. 19.
Spring ์Šค์ผ€์ฅด๋Ÿฌ ๋กœ์ง์ด ๋ฉ€ํ‹ฐ ์„œ๋ฒ„ ์ค‘ ํ•œ ์„œ๋ฒ„์—์„œ๋งŒ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •ํ•˜๊ธฐ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋ฉด ์ตœ์†Œํ•œ 2๋Œ€ ์ด์ƒ์˜ ๋ฉ€ํ‹ฐ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์šด์˜์„ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค์—์„œ ํŠน์ • ์‹œ๊ฐ„์—๋งŒ ์ˆ˜ํ–‰๋˜๋Š” ๋ฐฐ์น˜์„ฑ ๋กœ์ง์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ๋ฐฐ์น˜ ์„œ๋ฒ„๋ฅผ ๋ณ„๋„๋กœ ๋‘๊ธฐ๋„ ํ•˜์ง€๋งŒ ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์Šค์ผ€์ฅด๋Ÿฌ๋ฅผ ์„ค์ •ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์Šค์ผ€์ฅด๋Ÿฌ๋ฅผ ์ ์šฉํ•˜๋ฉด ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ์—์„œ A, B ์„œ๋ฒ„ ๋ชจ๋‘ ์Šค์ผ€์ฅด์ด ๋Œ๋ฉด์„œ ๋กœ์ง์ด 2๋ฒˆ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ์กฐ๊ธˆ ์ฐพ์•„๋ณด๋‹ˆ ๋Œ€๋ถ€๋ถ„์˜ ํฌ์ŠคํŒ…์—์„œ ShedLock? ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๋Š” ๋“ฏํ•œ๋ฐ, Spring Profile ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์™€ ๊ฐ™์ด ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์— @Profile ์„ ์„ค์ •ํ•˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ๋•Œ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. IntelliJ Run/Debug Configurations Application.. 2023. 12. 30.
Java ํด๋ž˜์Šค ์„ค๊ณ„ ์•ˆ์ „ํ•˜๊ฒŒ ์ž˜ ํ•˜๊ธฐ (feat. ์‘์ง‘๋„) ์ง€๋‚œ ํฌ์ŠคํŒ… Java ํด๋ž˜์Šค ์„ค๊ณ„ ์•ˆ์ „ํ•˜๊ฒŒ ์ž˜ ํ•˜๊ธฐ ํŽธ์—์„œ๋Š” ํด๋ž˜์Šค ์„ค๊ณ„์™€ ๊ด€๋ จํ•˜์—ฌ ๋‹ค์Œ ๋‚ด์šฉ๋“ค์„ ์‚ดํŽด๋ดค์—ˆ๋Š”๋ฐ์š”, ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์ •์ƒ์ ์ธ ๊ฐ’ ์„ค์ •ํ•˜๊ธฐ ๋ณ€์ˆ˜๋ฅผ ๋ถˆ๋ณ€์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ๋™์ž‘ ์˜ˆ๋ฐฉํ•˜๊ธฐ ๋ถˆ๋ณ€์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ๋ฉ”์„œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ง€์—ญ ๋ณ€์ˆ˜๋„ ๋ถˆ๋ณ€์œผ๋กœ ๋งŒ๋“ค๊ธฐ ๋ฉ”์„œ๋“œ์— ์ž˜๋ชป๋œ ๊ฐ’์˜ ์ „๋‹ฌ์„ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์‘์ง‘๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํด๋ž˜์Šค ์„ค๊ณ„์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‘์ง‘๋„๋Š”, 'ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋กœ์ง ์‚ฌ์ด์˜ ๊ด€๊ณ„๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊ฐ•ํ•œ์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ' ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. 1. static ๋ฉ”์„œ๋“œ ์˜ค์šฉ static ๋ฉ”์„œ๋“œ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ํŽธ๋ฆฌํ•จ์ด ์žˆ์ง€๋งŒ, ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š” ์‘์ง‘๋„๊ฐ€ ๋‚ฎ์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. static ๋ฉ”์„œ๋“œ.. 2023. 12. 20.
Java ํด๋ž˜์Šค ์„ค๊ณ„ ์•ˆ์ „ํ•˜๊ฒŒ ์ž˜ ํ•˜๊ธฐ ํด๋ž˜์Šค๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ดˆ๊ธฐ ๋‹จ๊ณ„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ, ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์—์„œ ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์„ค๊ณ„๋ฅผ ์ž˜ ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋– ํ•œ ์ ๋“ค์„ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ง€ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค ์˜ˆ์ œ๋Š” ๊ธˆ์•ก์„ ๋‚˜ํƒ€๋‚ด๋Š” Money ํด๋ž˜์Šค๋ฅผ ํ† ๋Œ€๋กœ ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์ •์ƒ์ ์ธ ๊ฐ’ ์„ค์ •ํ•˜๊ธฐ ์œ„์™€ ๊ฐ™์ด ๋ชจ๋“  ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์„ ๋ฐ›๋Š” ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ, ์œ„์˜ ๋ฌธ์ œ์ ์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ž˜๋ชป๋œ ๊ฐ’์ด ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์œ„์˜ ๊ฒฝ์šฐ ๊ฐ์ฒด๋Š” ์ •์ƒ์ ์œผ๋กœ ์ƒ์„ฑ๋˜์ง€๋งŒ, ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜์—ฌ ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ž˜๋ชป๋œ ๊ฐ’์ด ์œ ์ž…๋˜์ง€ ๋ชปํ•˜๊ฒŒ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ธˆ์•ก (amount): 0 ์ด์ƒ์˜ ์ •์ˆ˜ ํ†ตํ™” (currency): null .. 2023. 12. 16.
Spring @ComponentScan ๋™์ž‘ ๊ณผ์ • Spring์—์„œ ํด๋ž˜์Šค์— @Configuration, @RestController, @Service ๋“ฑ์˜ ์–ด๋…ธํ…Œ์ด์…˜์„ ์„ ์–ธํ•˜๋ฉด ์Šคํ”„๋ง์€ ํ•ด๋‹น ์–ด๋…ธํ…Œ์ด์…˜๋“ค์„ ์Šค์บ”ํ•ด์„œ ๋นˆ์œผ๋กœ ๋“ฑ๋ก์„ ํ•ด์ฃผ๋Š”๋ฐ์š”, ์ด๋Ÿฌํ•œ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด @ComponentScan ์–ด๋…ธํ…Œ์ด์…˜ ์ž…๋‹ˆ๋‹ค. @ComponentScan ์€ ๋‹จ์–ด ๊ทธ๋Œ€๋กœ @Component ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ํด๋ž˜์Šค๋“ค์„ ์Šค์บ”ํ•˜์—ฌ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜๋Š”๋ฐ, ์œ„์— ์–ธ๊ธ‰๋œ ์–ด๋…ธํ…Œ์ด์…˜๋“ค์€ ๋ชจ๋‘ ๋‚ด๋ถ€์— @Component ์–ด๋…ธํ…Œ์ด์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์™€ ๊ฐ™์€ ์–ด๋…ธํ…Œ์ด์…˜๋“ค์„ ์„ค์ •ํ•˜๋ฉด ์Šคํ”„๋ง์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์Šค์บ”ํ•˜๊ณ , ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. @ComponentScan ComponentScan ์–ด๋…ธํ…Œ์ด์…˜์— ์กด์žฌํ•˜๋Š” ์ฃผ์„์œผ๋กœ, ๋Œ€๋žต์ ์ธ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.. 2023. 12. 9.
Spring Bean ์ด ๋“ฑ๋ก๋˜๋Š” ๊ณผ์ • ์Šคํ”„๋ง์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด @Configuration, @Component, @Bean ๋“ฑ์˜ ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋นˆ์„ ๋“ฑ๋กํ•˜๋Š”๋ฐ์š”, ์–ด๋– ํ•œ ๊ณผ์ •์„ ํ†ตํ•ด Bean ์ด ๋“ฑ๋ก๋˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋Š” ์œ„์™€ ๊ฐ™์ด @Configuration ์–ด๋…ธํ…Œ์ด์…˜์„ ์„ค์ •ํ•œ TestConfiguration ํด๋ž˜์Šค๊ฐ€ ์กด์žฌํ•˜๊ณ , main ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•œ Main ํด๋ž˜์Šค์—์„œ ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜์˜ AnnotationConfigApplicationContext ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด ์ƒ์„ฑ์ž์—๋Š” TestConfiguration ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค. ์œ„ ๊ณผ์ •์„ ํ†ตํ•ด ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜์˜ Spring Bean ์ด ๋“ฑ๋ก๋˜๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. BeanFactory BeanFactory ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์Šคํ”„๋ง .. 2023. 12. 2.
์Šคํ”„๋ง์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์‹œ ํ•œ๊ธ€์ด ๊นจ์ง€๋Š” ์ด์Šˆ (ISO-8859-1) ์•ˆ๋…•ํ•˜์„ธ์š”, ์ตœ๊ทผ ํด๋ผ์ด์–ธํŠธ(Vue) ์™€ ์„œ๋ฒ„(Spring Boot) ์—ฐ๋™ ์‹œ ์„œ๋ฒ„์—์„œ ํ•œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์—์„œ ํ•œ๊ธ€์ด ๊นจ์ง€๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ๋Š”๋ฐ์š”, ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ๊ฐ„๋žตํžˆ ์ •๋ฆฌํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์›์ธ HttpMessageConverter ์ธํ„ฐํŽ˜์ด์Šค๋Š” Spring์—์„œ HTTP request, response ๋ฅผ ๋ณ€ํ™˜ํ•ด ์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ธ๋ฐ์š”, ํ•ด๋‹น ํฌ์ŠคํŒ…์„ ์ดํ•ดํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋‚ด์šฉ์ด๋ผ ๊ฐ„๋žตํ•˜๊ฒŒ๋งŒ ์„ค๋ช…ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง์—์„œ ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” @RestController ์–ด๋…ธํ…Œ์ด์…˜์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” @ResponseBody ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, HttpMessageConverter ์ด ๋™์ž‘ํ•˜๊ณ  ๋ฐ˜ํ™˜ ํƒ€์ž…์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๊ตฌํ˜„์ฒด๊ฐ€ ์‚ฌ์šฉ์ด ๋ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” ByteArrayHttpMessageC.. 2023. 11. 20.
Bean Validation (Hibernate Validation) Bean Validation์€ ํ•„๋“œ์˜ ๊ฐ’, ๋ฒ”์œ„ ๋“ฑ์„ ๊ฒ€์ฆํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์Œ ์ด ๊ธฐ์ˆ ์˜ ๊ตฌํ˜„์ฒด ์ค‘ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌํ˜„์ฒด๊ฐ€ Hibernate Validator https://docs.jboss.org/hibernate/validator/6.2/reference/en-US/html_single/#validator-defineconstraints-spec Hibernate Validator 6.2.5.Final - Jakarta Bean Validation Reference Implementation: Reference Guide Validating data is a common task that occurs throughout all applicati.. 2023. 9. 30.
๋งŒ๋“ค๋ฉด์„œ ๋ฐฐ์šฐ๋Š” ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ(Front Controller) ํŒจํ„ด ์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ธฐ์กด Servlet ๊ธฐ๋ฐ˜์˜ MVC ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์Šคํ”„๋ง์˜ ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ ํŒจํ„ด์„ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๋ฉด์„œ ์ ์ง„์ ์œผ๋กœ ๊ฐœ์„ ํ•˜๋Š” ๊ณผ์ • ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ์•„๋ž˜ ๊ฐ•์˜๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค! https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard ์Šคํ”„๋ง MVC 1ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๊ธฐ์ˆ  - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์š”ํ•œ ๋ชจ๋“  ์›น ๊ธฐ์ˆ ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ดํ•ดํ•˜๊ณ , ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง MVC์˜ ํ•ต์‹ฌ ์›๋ฆฌ์™€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋” ๊นŠ์ด์žˆ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., ์› www.inflearn.com ์Šคํ”„๋ง์—์„œ ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ํŒจํ„ด์€ ๋ชจ๋“  HTTP ์š”์ฒญ.. 2023. 8. 16.
TDD, ํด๋ฆฐ ์ฝ”๋“œ with Java (๋ฏธ์…˜ 3, 4 - FP, OOP, ๋ฆฌํŒฉํ„ฐ๋ง) ์„ธ ๋ฒˆ์งธ ๋ฏธ์…˜์ธ ์‚ฌ๋‹ค๋ฆฌ ํƒ€๊ธฐ๋Š” ์ž๋ฐ” 8์˜ ์ŠคํŠธ๋ฆผ, ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•ด ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ฃผ๋œ ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. ๋„ค ๋ฒˆ์งธ ๋ฏธ์…˜์ธ ์ˆ˜๊ฐ•์‹ ์ฒญ์€ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ„ฐ๋ง ํ•˜๋Š” ๊ฒƒ์ด ์ฃผ๋œ ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ๋ฏธ์…˜์ธ ์‚ฌ๋‹ค๋ฆฌ ํƒ€๊ธฐ์—์„œ ๊ฒฝํ—˜ํ•ด์•ผ ํ•  ๋ชฉํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž๋ฐ” 8์˜ ์ŠคํŠธ๋ฆผ, ๋žŒ๋‹ค๋ฅผ ํ™œ์šฉํ•œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ In -> Out, Out -> In ๋ฐฉ์‹์œผ๋กœ ๋„๋ฉ”์ธ ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ฒฝํ—˜ ์ฑ…์ž„ ์ฃผ๋„ ์„ค๊ณ„ ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™œ์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋„ค ๋ฒˆ์งธ ๋ฏธ์…˜์ธ ์ˆ˜๊ฐ•์‹ ์ฒญ์—์„œ ๊ฒฝํ—˜ํ•ด์•ผ ํ•  ๋ชฉํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ„ฐ๋ง ํ•  ๋•Œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋ณดํ˜ธํ•˜๋Š” ๊ฒฝํ—˜ Q&A ์„œ๋น„์Šค์˜ ์งˆ๋ฌธ ์‚ญ์ œํ•˜๊ธฐ ๊ธฐ๋Šฅ์˜ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ„ฐ๋งํ•˜๋Š” ๊ฒฝํ—˜ DB ํ…Œ์ด๋ธ”๋ณด๋‹ค ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ TDD ๊ธฐ๋ฐ˜์œผ๋กœ ๋จผ์ € ๊ฐœ๋ฐœํ•ด ๋ณด๋Š” ๊ฒฝํ—˜.. 2023. 8. 7.
๋ฐ˜์‘ํ˜•