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

์ „์ฒด ๊ธ€418

Modern Java: An In-Depth Guide from Java 8 to Java 21 Modern Java์— ๋Œ€ํ•ด, Java 8 ~ Java 21๊นŒ์ง€์˜ ๋ณ€๊ฒฝ์ง€์ ์„ ์ •๋ฆฌํ•ด๋ณด๋Š” ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ฒˆ์—ญํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค.https://medium.com/@akineralkan/modern-java-an-in-depth-guide-from-version-8-to-21-by-akiner-alkan-f89b50e13c72 Modern Java: An In-Depth Guide from Version 8 to 21 | by Akiner AlkanDiscover Java’s evolution from 8 to 21, unveiling features like lambdas to sealed classes and records.medium.com ์ž๋ฐ” 8์„ ์‹œ์ž‘์œผ๋กœ ํฅ๋ฏธ๋กœ์šด ๊ธฐ๋Šฅ๋“ค์€.. 2024. 9. 8.
"์‹ค๋ฌด๋กœ ํ†ตํ•˜๋Š” ํด๋ฆฐ ์ฝ”๋“œ" ๋„์„œ ๋ฆฌ๋ทฐ ํ•œ๋น›๋ฏธ๋””์–ด์˜ ๋‚˜๋Š”๋ฆฌ๋ทฐ์–ด๋‹ค 2024๋ฅผ ํ†ตํ•ด 8์›”, ์‹ค๋ฌด๋กœ ํ†ตํ•˜๋Š” ํด๋ฆฐ ์ฝ”๋“œ (Clean Code Cookbook) ๋„์„œ๋ฅผ ์ œ๊ณต ๋ฐ›์•„ ์ฝ์–ด๋ณด๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฑ…์€ ์•ฝ 500p ์ •๋„์˜ ๋ถ„๋Ÿ‰์œผ๋กœ ์–‡์€ ํŽธ์€ ์•„๋‹ˆ๊ณ ์š”, ํด๋ฆฐ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๊ด€์‹ฌ์ด ๋งŽ๊ธฐ๋„ ํ•˜๊ณ , ์˜ˆ์ „์— ์ฝ์—ˆ๋˜ ํด๋ฆฐ ์ฝ”๋“œ ์ƒ๊ฐ๋„ ๋‚˜์„œ ์ฝ์–ด๋ณด๊ฒŒ ๋˜์—ˆ๋„ค์š”. ์ „๋ถ€ ์ฝ์ง€๋Š” ๋ชปํ–ˆ๊ณ , 60%์ •๋„๋งŒ ์ฝ์€ ์ƒํƒœ์—์„œ ๋” ์ฝ์œผ๋ฉด์„œ ๋‚ด์šฉ์ด ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋ง์”€๋“œ๋ฆฌ๋ฉด ํด๋ฆฐ ์ฝ”๋“œ (Clean Code) ๋„์„œ์™€ ๋น„์Šทํ•œ ๋‚ด์šฉ๋“ค์ด ๋งŽ์•˜์–ด์„œ ํด๋ฆฐ ์ฝ”๋“œ๋ฅผ ์ฝ์—ˆ๋‹ค๋ฉด, ๊ตณ์ด ์ด ์ฑ…์„ ๋ณด์ง€๋Š” ์•Š์•„๋„ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค..(?)  2์žฅ ๊ณต๋ฆฌ ์„ค์ •38p, ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์œผ๋ฉฐ MAPPER (๋งคํผ) ๋ผ๋Š” ์•ฝ์–ด๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.MAPPER (Model: Abstrac.. 2024. 8. 26.
์ผ„ํŠธ ๋ฐฑ์˜ Tidy First? ๋„์„œ ๋ฆฌ๋ทฐ ํ•œ๋น›๋ฏธ๋””์–ด์˜ ๋‚˜๋Š”๋ฆฌ๋ทฐ์–ด๋‹ค2024๋ฅผ ํ†ตํ•ด 5์›”, ์ผ„ํŠธ ๋ฐฑ์˜ Tidy First? ๋„์„œ๋ฅผ ๋ฐ›์•„ ์ฝ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฑ…์€ ๊ต‰์žฅํžˆ ์–‡๊ณ , ์‹ ๊ธฐํ•˜๊ฒŒ 2๊ถŒ์œผ๋กœ ๋˜์–ด์žˆ๋Š”๋ฐ ๊ฐ€๊ฒฉ์€ ๊ฝค๋‚˜ ๋น„์‹ธ๋„ค์š”.๊ทธ๋™์•ˆ ์ฝ”๋“œ ์ •๋ฆฌํ•˜๋Š” ์ž‘์—…์„ ๋งŽ์ด ํ•˜๋‹ค๋ณด๋‹ˆ, ์ฑ…์—์„œ ๊ณต๊ฐ ๊ฐ€๋Š” ๋ถ€๋ถ„์ด ๊ฝค ์กด์žฌํ–ˆ๊ณ , ๊ถ๊ธˆ์ฆ์— ๋Œ€ํ•ด์„œ๋„ ์–ด๋А์ •๋„ ํ•ด์†Œํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์žฅ์˜ ์ด๋ก  ๋ถ€๋ถ„์—์„œ๋Š” ๊ธˆ์œต, ์˜ต์…˜ ๋“ฑ์˜ ๊ฐœ๋…์ด ๋‚˜์˜ค๋Š”๋ฐ, ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๊ฐ๊ฐ€๋Š” ๋ถ€๋ถ„์ด ๋งŽ์ง€๋Š” ์•Š์•„์„œ ๋น ๋ฅด๊ฒŒ ๋„˜๊ฒผ๋˜ ๊ฒƒ ๊ฐ™๋„ค์š”.. ์•„๋ž˜๋Š” ๋„์„œ์—์„œ ๊ดœ์ฐฎ์•˜๋˜, ์ •๋ฆฌํ•ด๋†“์€ ๋ฌธ์žฅ๋“ค์ž…๋‹ˆ๋‹ค.   Part 01, ์ฝ”๋“œ ์ •๋ฆฌ๋ฒ•18p, ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํ–‰๋™์„ ํ•˜๋ฉด์„œ ๋ถˆ์•ˆํ•ดํ•˜๋Š” ๊ฒƒ์€ ๊ฒฝ์†”ํ•˜๊ฒŒ ์•ˆ์ „์„ ํ™•์‹ ํ•˜๋ฉฐ ์šฐ๋‘”ํ•˜๊ฒŒ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ์Šต๋‹ˆ๋‹ค. ์š”์ฆ˜ ํŠนํžˆ๋‚˜ ๋งŽ์ด ๋А๋ผ๋Š” ๊ฐ์ •์ด๋ผ ๋”์šฑ ๊ณต๊ฐ์ด ๊ฐ”๋˜ ๋ฌธ์žฅ์ธ ๊ฒƒ ๊ฐ™๋„ค.. 2024. 5. 25.
Spring @RequestBody ํ•„๋“œ ๋ฐ”์ธ๋”ฉ์ด ๋˜์ง€ ์•Š๋Š” ์ด์Šˆ (feat. Lombok, Jackson์˜ ๋„ค์ด๋ฐ ์ฐจ์ด) ๊ฐœ์š” Spring์—์„œ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ JSON ํ˜•์‹์œผ๋กœ ๋ฐ›๊ณ , @RequestBody๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JSON body์˜ ๋ฐ์ดํ„ฐ๋ฅผ Java Object์˜ ํ•„๋“œ์™€ ์—ญ์ง๋ ฌํ™”(Deserialize)๋ฅผ ํ†ตํ•ด ๊ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉ์ด ์ด๋ฃจ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ํ•„๋“œ์˜ ํŠน์ • ๋„ค์ด๋ฐ + Lombok์˜ @Getter๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐ”์ธ๋”ฉ์ด ์ •์ƒ์ ์œผ๋กœ ๋˜์ง€ ์•Š๋Š” ์ด์Šˆ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ์š”, ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ๊ฐ„๋žตํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ### Send POST request with json body POST http://localhost:8080/api/v1/test Content-Type: application/json { "pId": "pId", "poId": "poId" } ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์™€ ๊ฐ™์€ ์„œ๋ฒ„ ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•˜๊ณ  ํด๋ผ.. 2024. 3. 20.
Spring Swagger(springdoc-openapi) Unable to render this definition ์˜ค๋ฅ˜ Spring ์—์„œ ๋ฌธ์„œํ™”๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ ์ž Swagger(Springdoc-openapi)๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. Unable to render this definition ... ์‹ค์ œ api-docs URL๋กœ ์ ‘๊ทผํ•ด๋ณด๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ปจ๋ฒ„ํ„ฐ๊ฐ€ ์•ˆ๋˜์–ด ๋‚˜์˜ค๋Š” ๋“ฏ ํ•œ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” MessageConverter ๋ฅผ Customํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ , ๋Œ€๋žต์ ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉ์ค‘์ž…๋‹ˆ๋‹ค. @Override public void configureMessageConverters(List 2024. 3. 4.
์‹ ๊ทœ ์‹œ์Šคํ…œ ๊ตฌ์ถ•ํ•˜๊ธฐ (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.
๋ฐ˜์‘ํ˜•