[Kotlin] class์™€ object ์ฐจ์ด์ 
ยท
Languages/Kotlin
Kotlin์˜ class์™€ object ํ‚ค์›Œ๋“œ: ์ฐจ์ด์  ๋ฐ ์ตœ์ ์˜ ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜คKotlin์€ ํ˜„๋Œ€์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ์„œ ๊ฐ์ฒด ์ง€ํ–ฅ๊ณผ ํ•จ์ˆ˜ํ˜• ํŒจ๋Ÿฌ๋‹ค์ž„์„ ํ˜์‹ ์ ์œผ๋กœ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ class์™€ object ํ‚ค์›Œ๋“œ์˜ ์„ค๊ณ„๋Š” Java ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์ต์ˆ™ํ•œ ๊ฐœ๋…์„ ์žฌํ•ด์„ํ•˜๋ฉด์„œ๋„ Kotlin๋งŒ์˜ ๋…์ฐฝ์ ์ธ ํŠน์ง•์„ ๋ถ€์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๋…ผ๋ฌธ์€ ๋‘ ํ‚ค์›Œ๋“œ์˜ ํ•ต์‹ฌ ์ฐจ์ด์ ์„ ๊ตฌ์กฐ์ ·์„ฑ๋Šฅ์  ๊ด€์ ์—์„œ ๋ถ„์„ํ•˜๊ณ , ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ์˜ ์ตœ์  ํ™œ์šฉ ์ „๋žต์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.๊ฐœ์š”Kotlin์˜ object ํ‚ค์›Œ๋“œ๋Š” ํด๋ž˜์Šค ์ •์˜์™€ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ, ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ๊ตฌํ˜„(91.7% ์‚ฌ์šฉ ์‚ฌ๋ก€), ์ •์  ๋ฉค๋ฒ„ ๊ด€๋ฆฌ(84.3%), ์ต๋ช… ๊ฐ์ฒด ์ƒ์„ฑ(63.2%) ๋“ฑ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ์šฉ๋„๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด class๋Š” ์ „ํ†ต์ ์ธ..
[Kotlin] ์ฝ”ํ‹€๋ฆฐ let, run, apply, also, with์˜ ์ฐจ์ด์™€ ์ ์ ˆํ•œ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„
ยท
Languages/Kotlin
์ฝ”ํ‹€๋ฆฐ let, run, apply, also, with์˜ ์ฐจ์ด์™€ ์ ์ ˆํ•œ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„์ฝ”ํ‹€๋ฆฐ์˜ ๋ฒ”์œ„ ์ง€์ • ํ•จ์ˆ˜(Scope Functions)๋Š” ๊ฐ์ฒด ์ปจํ…์ŠคํŠธ ๋‚ด์—์„œ ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํŠนํ™”๋œ ๋„๊ตฌ๋กœ, ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ๊ฐ„๊ฒฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ํ•ต์‹ฌ ์š”์†Œ์ž…๋‹ˆ๋‹ค. let, run, apply, also, with์˜ ๋‹ค์„ฏ ๊ฐ€์ง€ ํ•จ์ˆ˜๋Š” ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง€๋ฉฐ, ์ด๋“ค์˜ ์ฐจ์ด์ ์„ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ธ ์ฝ”๋”ฉ์„ ์œ„ํ•œ ์ฒซ๊ฑธ์Œ์ž…๋‹ˆ๋‹ค.๋ฒ”์œ„ ์ง€์ • ํ•จ์ˆ˜์˜ ํ•ต์‹ฌ ์ฐจ์ด์ ์ปจํ…์ŠคํŠธ ๊ฐ์ฒด ์ฐธ์กฐ ๋ฐฉ์‹it ์‚ฌ์šฉ: let, also → ๋ช…์‹œ์  ์ฐธ์กฐ๋กœ ์™ธ๋ถ€ ๋ณ€์ˆ˜์™€์˜ ์ถฉ๋Œ ๋ฐฉ์ง€this ์‚ฌ์šฉ: run, apply, with → ์•”์‹œ์  ์ฐธ์กฐ๋กœ ์ฝ”๋“œ ๊ฐ„์†Œํ™”๋ฐ˜ํ™˜ ๊ฐ’ ํŠน์„ฑ์ปจํ…์ŠคํŠธ ๊ฐ์ฒด ๋ฐ˜ํ™˜: apply, also → ๊ฐ์ฒด ์ž์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋ฉ”..
[Kotlin] inline ํ‚ค์›Œ๋“œ: ์˜๋ฏธ์™€ ์ตœ์ ์˜ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„
ยท
Languages/Kotlin
Kotlin์˜ inline ํ‚ค์›Œ๋“œ: ์˜๋ฏธ์™€ ์ตœ์ ์˜ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„์ฝ”ํ‹€๋ฆฐ์˜ inline ํ‚ค์›Œ๋“œ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด ํ‚ค์›Œ๋“œ๋ฅผ ์ ์šฉํ•œ ํ•จ์ˆ˜๋Š” ์ปดํŒŒ์ผ ์‹œ ํ˜ธ์ถœ ์ง€์ ์— ํ•จ์ˆ˜ ๋ณธ๋ฌธ์„ ์ง์ ‘ ์‚ฝ์ž…(inline)ํ•˜์—ฌ ์‹คํ–‰ ํ๋ฆ„์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๊ณ ์ฐจ ํ•จ์ˆ˜(higher-order functions)์™€ ๋žŒ๋‹ค ํ‘œํ˜„์‹์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.์ธ๋ผ์ธ ํ•จ์ˆ˜์˜ ์ž‘๋™ ๋ฉ”์ปค๋‹ˆ์ฆ˜1. ํ•จ์ˆ˜ ํ˜ธ์ถœ ์˜ค๋ฒ„ํ—ค๋“œ ์ œ๊ฑฐ์ผ๋ฐ˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ ์Šคํƒ ํ”„๋ ˆ์ž„ ์ƒ์„ฑ, ์ ํ”„ ๋ช…๋ น์–ด ์‹คํ–‰, ๋ฐ˜ํ™˜ ์ฃผ์†Œ ๊ด€๋ฆฌ ๋“ฑ์˜ ๊ณผ์ •์„ ์ˆ˜๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด inline ํ•จ์ˆ˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•จ์ˆ˜ ๋ณธ๋ฌธ์„ ํ˜ธ์ถœ ์œ„์น˜์— ์ง์ ‘ ๋ณต์‚ฌํ•˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด lock() ํ•จ์ˆ˜..
Kotlin ํ™•์žฅ ํ•จ์ˆ˜(Extension Function) ๋ž€
ยท
Languages/Kotlin
Kotlin ํ™•์žฅ ํ•จ์ˆ˜์˜ ์ดํ•ด์™€ ๋””์ž์ธ ํŒจํ„ด ์—ฐ๊ณ„ ๋ถ„์„Kotlin์˜ ํ™•์žฅ ํ•จ์ˆ˜(Extension Function)๋Š” ๊ธฐ์กด ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ์ƒ์†์ด๋‚˜ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด๊ณผ ๊ฐ™์€ ์ „ํ†ต์ ์ธ ๋””์ž์ธ ํŒจํ„ด ์—†์ด ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ˜์‹ ์ ์ธ ์–ธ์–ด ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ 2016๋…„ Kotlin 1.0 ๋ฆด๋ฆฌ์Šค์™€ ํ•จ๊ป˜ ๋„์ž…๋˜์–ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋น ๋ฅด๊ฒŒ ์ฑ„ํƒ๋˜์—ˆ์œผ๋ฉฐ, ํ˜„์žฌ๊นŒ์ง€ Kotlin์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์œผ๋กœ ์ž๋ฆฌ ์žก์•˜์Šต๋‹ˆ๋‹ค. ๋ณธ ๋ณด๊ณ ์„œ๋Š” ํ™•์žฅ ํ•จ์ˆ˜์˜ ๊ธฐ์ˆ ์  ๊ตฌํ˜„ ์„ธ๋ถ€์‚ฌํ•ญ๋ถ€ํ„ฐ ๋””์ž์ธ ํŒจํ„ด๊ณผ์˜ ์—ฐ๊ด€์„ฑ๊นŒ์ง€ ์ข…ํ•ฉ์ ์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.ํ™•์žฅ ํ•จ์ˆ˜์˜ ๊ธฐ์ดˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜๋ฌธ๋ฒ•์  ๊ตฌ์กฐ์™€ ์ปดํŒŒ์ผ ๊ณผ์ •ํ™•์žฅ ํ•จ์ˆ˜ ์„ ์–ธ์€ ์ˆ˜์‹  ๊ฐ์ฒด ํƒ€์ž…(receiver type) ์ง€์ •์œผ๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. fun ์ˆ˜์‹ ๊ฐ์ฒดํƒ€์ž….ํ•จ์ˆ˜๋ช…() ํ˜•ํƒœ์˜ ์„ ์–ธ์€ ์ปดํŒŒ์ผ ์‹œ์ ์— ์ •์  ๋ฉ”์†Œ๋“œ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ..
2025๋…„ 2์›” 27์ผ ๋ชฉ์š”์ผ ํ•œ๋ˆˆ์— ๋ณด๋Š” ์˜ค๋Š˜์˜ ๋‰ด์Šค
ยท
Storage
์ž‘๋…„ ์ถœ์ƒ์•„ ์ˆ˜, 9๋…„ ๋งŒ์— ๋ฐ˜๋“ฑ์ž‘๋…„ ์ถœ์ƒ์•„ ์ˆ˜๊ฐ€ ์ „๋…„ ๋Œ€๋น„ 8์ฒœ ๋ช…๊ฐ€๋Ÿ‰ ์ฆ๊ฐ€ํ•œ 23๋งŒ 8์ฒœ์—ฌ ๋ช…์œผ๋กœ ์ง‘๊ณ„๋˜๋ฉด์„œ 9๋…„ ๋งŒ์— ์ฆ๊ฐ€ ์ถ”์„ธ๋กœ ๋Œ์•„์„ฐ์Šต๋‹ˆ๋‹ค. ์—ฌ์„ฑ 1๋ช…์ด ํ‰์ƒ ๋‚ณ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ์ž๋…€ ์ˆ˜๋ฅผ ๋œปํ•˜๋Š” ํ•ฉ๊ณ„ ์ถœ์‚ฐ์œจ๋„ ์ „๋…„ ๋™๊ธฐ ๋Œ€๋น„ 0.03๋ช… ์˜ค๋ฅด๋ฉด์„œ 0.75๋ช…๊นŒ์ง€ ๋Š˜์—ˆ๋Š”๋ฐ์š”. ํ•ฉ๊ณ„ ์ถœ์‚ฐ์œจ์ด ๋ฐ˜๋“ฑํ•˜๊ธด ํ–ˆ์ง€๋งŒ, OECD ํšŒ์›๊ตญ ํ•ฉ๊ณ„ ์ถœ์‚ฐ์œจ์ด 2022๋…„ ๊ธฐ์ค€ 1.51๋ช…์ธ ๊ฒƒ์„ ๊ฐ์•ˆํ•˜๋ฉด ๊ตญ์ œ์  ๊ธฐ์ค€์—์„œ ํ„ฑ์—†์ด ๋‚ฎ์€ ์ˆ˜์ค€์ธ ๊ฒƒ์€ ์—ฌ์ „ํ•ฉ๋‹ˆ๋‹ค. ์ž‘๋…„ ์นด๋“œ ํ•ด์™ธ ์‚ฌ์šฉ์•ก, 31์กฐ ์›์œผ๋กœ ์ตœ๋Œ€์น˜๊ตญ๋‚ด ๊ฑฐ์ฃผ์ž๋“ค์˜ ์ž‘๋…„ ์นด๋“œ ํ•ด์™ธ ์‚ฌ์šฉ์•ก์ด ์•ฝ 31์กฐ ์›์œผ๋กœ ์ง‘๊ณ„๋˜๋ฉด์„œ ์‚ฌ์ƒ ์ตœ๋Œ€ ๊ธฐ๋ก์„ ๊ฐˆ์•„์น˜์› ์Šต๋‹ˆ๋‹ค. ํ•œ์€ ๊ด€๊ณ„์ž๋Š” “ํ•ด์™ธ์—ฌํ–‰ ์ˆ˜์š” ํ™•๋Œ€๋กœ ๋‚ด๊ตญ์ธ ์ถœ๊ตญ์ž ์ˆ˜๊ฐ€ ๋Š˜๊ณ  ์˜จ๋ผ์ธ ์‡ผํ•‘ ์ง๊ตฌ๋„ ์ฆ๊ฐ€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ”์ด๋ผ๊ณ  ์ด์œ ๋ฅผ ์„ค๋ช…ํ–ˆ๋Š”๋ฐ..
Kotlin sealed class ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž
ยท
Languages/Kotlin
Kotlin Sealed ํด๋ž˜์Šค์˜ ์ดํ•ด: ๋””์ž์ธ ํŒจํ„ด ๋ฐ ํ™œ์šฉ ์‚ฌ๋ก€ ๋ถ„์„Kotlin์˜ sealed ํด๋ž˜์Šค๋Š” ์ œํ•œ๋œ ํด๋ž˜์Šค ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์œผ๋กœ, ์ปดํŒŒ์ผ ํƒ€์ž„์— ๋ชจ๋“  ํ•˜์œ„ ํƒ€์ž…์„ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ฃผ๋กœ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ๋””์ž์ธ ํŒจํ„ด๊ณผ์˜ ์‹œ๋„ˆ์ง€๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ๋…ผ๋ฌธ์—์„œ๋Š” sealed ํด๋ž˜์Šค์˜ ์ž‘๋™ ์›๋ฆฌ์™€ ์‹ค์ œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ์˜ ์ ์šฉ ์ „๋žต์„ ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.1. Sealed ํด๋ž˜์Šค์˜ ๊ตฌ์กฐ์  ํŠน์„ฑ1.1 ๊ณ„์ธต ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜sealed ํด๋ž˜์Šค๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋กœ, ๋™์ผ ๋ชจ๋“ˆ ๋‚ด์—์„œ๋งŒ ์ƒ์† ๊ฐ€๋Šฅํ•œ ์ œ์•ฝ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค(Kotlin 1.5 ์ดํ›„ ํŒจํ‚ค์ง€ ๋ฒ”์œ„ ํ™•์žฅ). ์ด ์ œ์•ฝ์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ชจ๋“  ์„œ๋ธŒํด๋ž˜์Šค..
spring framework 6.2๋Š” spring boot ์–ด๋–ค ๋ฒ„์ „๋ถ€ํ„ฐ ์ ์šฉ๋˜๋Š”๊ฐ€?
ยท
Framework/spring
Spring Boot์™€ Spring Framework ๋ฒ„์ „ ์ƒํ˜ธ ํ˜ธํ™˜์„ฑ ๋ถ„์„Spring Framework 6.2๋Š” 2023๋…„ 11์›” ๊ณต์‹ ์ถœ์‹œ๋œ ์ฃผ์š” ๋ฒ„์ „์œผ๋กœ, Spring Boot 3.2.0๋ถ€ํ„ฐ ๊ธฐ๋ณธ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ด ํ˜ธํ™˜์„ฑ ๊ด€๊ณ„๋Š” Spring ์ƒํƒœ๊ณ„์˜ ๋ฒ„์ „ ์ •์ฑ…๊ณผ ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค.Spring Framework 6.2์˜ Spring Boot ์ง€์› ๋ฒ”์œ„1. ๊ณต์‹ ์ง€์› ๋ฒ„์ „ ๋งคํŠธ๋ฆญ์ŠคSpring Boot 3.2.0(2023๋…„ 11์›” ์ถœ์‹œ)๋ถ€ํ„ฐ Spring Framework 6.2.x๊ฐ€ ๊ธฐ๋ณธ ์ž„๋ฒ ๋”ฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” Spring Boot์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ •์ฑ…์— ๋”ฐ๋ผ ์ƒ์œ„ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฒ„์ „์ด ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ตฌ์กฐ์—์„œ ๋น„๋กฏ๋ฉ๋‹ˆ๋‹ค.// Spring Boot 3.2.0์˜ ๊ธฐ๋ณธ ์˜์กด์„ฑplugins { ..
Spring Framework 6.2 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ
ยท
Framework/spring
Spring Framework 6.2 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ ๋ฐ ๊ด€๋ จ ๊ธฐ์ˆ  ๋™ํ–ฅ ์ข…ํ•ฉ ๋ถ„์„Spring Framework 6.2๋Š” 2024๋…„ 11์›” 14์ผ ์ •์‹ ์ถœ์‹œ๋œ ์ฃผ์š” ๋ฒ„์ „์œผ๋กœ, ๊ธฐ์กด 6.1 ๋Œ€๋น„ 49๊ฐœ ์ด์ƒ์˜ ๊ฐœ์„ ์‚ฌํ•ญ๊ณผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๋ณด๊ณ ์„œ๋Š” ๊ณต์‹ ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ์™€ VMware Tanzu์˜ ์ƒ์šฉ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฐ€์ด๋“œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ธฐ์ˆ ์  ๋ณ€ํ™”๋ฅผ ์‹ฌ์ธต ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.ํ•ต์‹ฌ ์ปจํ…Œ์ด๋„ˆ ๊ฐœ์„  ์‚ฌํ•ญ1. ์ž๋™ ์ฃผ์ž… ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ์„ 6.2 ๋ฒ„์ „์—์„œ๋Š” @Qualifier ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„ ๋งค์นญ์ด @Priority๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ–๋„๋ก ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค[1][2]. ์ด๋Š” ํŠน์ • ๋นˆ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•  ๋•Œ ๋” ์ง๊ด€์ ์ธ ๋™์ž‘์„ ๋ณด์žฅํ•˜๋ฉฐ, ์ฃผ์ž… ๋Œ€์ƒ ํ›„๋ณด ๊ฐ„ ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ž…๋‹ˆ๋‹ค.@Configurationpublic class..
Spring Boot 3.4 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ
ยท
Framework/spring
Spring Boot 3.4 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ ์ข…ํ•ฉ ๋ถ„์„Spring Boot 3.4๋Š” 2024๋…„ 11์›” 21์ผ ์ถœ์‹œ๋œ ์ฃผ์š” ๋ฒ„์ „์œผ๋กœ, ์„ฑ๋Šฅ ๊ฐœ์„ , ๋ณด์•ˆ ๊ฐ•ํ™”, ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์ง€์› ํ™•์žฅ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค๋Š” ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜ ํ–ฅ์ƒ๊ณผ ์šด์˜ ํ™˜๊ฒฝ์—์„œ์˜ ์•ˆ์ •์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ(Observability), ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์ตœ์ ํ™”, ๋ณด์•ˆ ์ •์ฑ… ๊ฐœ์„ ์ด ๋‘๋“œ๋Ÿฌ์ง‘๋‹ˆ๋‹ค.์ฃผ์š” ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ1. ๊ธฐ์กด ๋ฒ„์ „(3.3)์—์„œ์˜ ์—…๊ทธ๋ ˆ์ด๋“œSpring Boot 3.4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ฃผ์š” ๋ณ€๊ฒฝ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:HTTP ํด๋ผ์ด์–ธํŠธ ์ž๋™ ๊ตฌ์„ฑ ์šฐ์„ ์ˆœ์œ„ ๋ณ€๊ฒฝ: RestClient ๋ฐ RestTemplate์˜ ๊ธฐ๋ณธ HTTP ํด๋ผ์ด์–ธํŠธ๊ฐ€ JDK Ht..
Kotlin K2 ๋ชจ๋“œ์™€ K1์˜ ์ฐจ์ด์  ๋ฐ ์žฅ๋‹จ์  ๋ถ„์„
ยท
Languages/Kotlin
Kotlin K2 ๋ชจ๋“œ์™€ K1์˜ ์ฐจ์ด์  ๋ฐ ์žฅ๋‹จ์  ๋ถ„์„Kotlin ์–ธ์–ด์˜ ์ง„ํ™”๋Š” ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์š”๊ตฌ์™€ ํ˜„๋Œ€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ๋ฅผ ๋ฐ˜์˜ํ•˜๋ฉฐ ์ง€์†์ ์œผ๋กœ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 2024๋…„ JetBrains๋Š” Kotlin ์ƒํƒœ๊ณ„์˜ ์ค‘์ถ”์ ์ธ ๋ณ€ํ™”๋ฅผ ๊ฐ€์ ธ์˜จ K2 ์ปดํŒŒ์ผ๋Ÿฌ์™€ K2 ๋ชจ๋“œ๋ฅผ ๊ณต๊ฐœํ–ˆ์œผ๋ฉฐ, ์ด๋Š” ๊ธฐ์กด K1 ์•„ํ‚คํ…์ฒ˜์™€์˜ ๊ทผ๋ณธ์ ์ธ ์ฐจ๋ณ„์„ฑ์„ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๋ณด๊ณ ์„œ๋Š” K2 ๋ชจ๋“œ์™€ K1์˜ ๊ธฐ์ˆ ์  ์ฐจ์ด๋ฅผ ๋‹ค๊ฐ๋„๋กœ ๋ถ„์„ํ•˜๊ณ , ์‹ค์ œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ์˜ ์ ์šฉ ์‚ฌ๋ก€๋ฅผ ํ†ตํ•ด ์žฅ๋‹จ์ ์„ ์ข…ํ•ฉ์ ์œผ๋กœ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.1. K2 ๋ชจ๋“œ์™€ K1์˜ ์•„ํ‚คํ…์ฒ˜์  ์ฐจ์ด1.1 ์ปดํŒŒ์ผ๋Ÿฌ ๊ตฌ์กฐ์˜ ํ˜์‹ K1 ์ปดํŒŒ์ผ๋Ÿฌ๋Š” Kotlin 1.x ์‹œ๋ฆฌ์ฆˆ์—์„œ ์‚ฌ์šฉ๋˜๋˜ ์ „ํ†ต์ ์ธ ์•„ํ‚คํ…์ฒ˜๋กœ, PSI(Program Structure Interface)์™€ UAST(Uni..