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

์ „์ฒด ๊ธ€250

[Effective Kotlin] ์•„์ดํ…œ 32. ์ƒ์„ฑ์ž ๋Œ€์‹  ํŒฉํ† ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ผ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ๊ฐ€์žฅ ์˜๋ฏธ ์žˆ๊ฒŒ ์ฝ์€ ์ฑ…์€ [์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”]์ด๋‹ค. ์ž๋ฐ”๋ฅผ ๋งŒ๋“  ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ง‘ํ•„ํ•œ ์ฑ…์ด๋ฏ€๋กœ, ์ž๋ฐ”๋ฅผ ์ž๋ฐ”๋‹ต๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์•„์ฃผ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…๋˜์–ด ์žˆ๋‹ค. ๊ฐ€์žฅ ์ฒซ ์ฑ•ํ„ฐ์ธ '์ƒ์„ฑ์ž ๋Œ€์‹  ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ'๋ผ๋Š” ์•„์ดํ…œ์„ ๊ต‰์žฅํžˆ ์˜๋ฏธ ์žˆ๊ฒŒ ์ฝ๊ฒŒ ๋˜์—ˆ๊ณ , ๊ทธ ๋‚ด์šฉ์„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์• ์šฉํ–ˆ์—ˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ๋„ ์ž๋ฐ”์˜ ์ด์ ์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ๊ฐ„ ์–ธ์–ด์ด๋ฏ€๋กœ, ๋น„์Šทํ•˜๊ฒŒ ์ ์šฉ ๋˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์„์ง€๋ฅผ ์ƒ๊ฐํ•ด ๋ดค๋‹ค. ํšŒ์‚ฌ์— ๋“ค์–ด๊ฐ€์„œ ์ฝ”ํ‹€๋ฆฐ์„ ๋ฐฐ์šฐ๊ณ  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ, ๊ฐ€์žฅ ๋ˆˆ์— ๋„์—ˆ๋˜ ๋ถ€๋ถ„์ด dto ๊ฐ์ฒด๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๋ถ€๋ถ„์ด์—ˆ๊ณ , ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–จ๊นŒ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ถ„๋“ค๊ณผ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ์ž๋ฐ”์™€ ๋™์ผํ•˜๊ฒŒ ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŽ์ด๋“ค ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ •๋ณด๋ฅผ ์–ป์—ˆ๊ณ , ๊ทธ๋Œ€๋กœ ์ ์šฉํ–ˆ์—ˆ๋‹ค. ์ดํŽ™ํ‹ฐ๋ธŒ.. 2023. 1. 29.
[Effective kotlin] ์•„์ดํ…œ 27. ๋ณ€ํ™”๋กœ๋ถ€ํ„ฐ ์ฝ”๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๋ ค๋ฉด ์ถ”์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋ผ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ๊ฐ์ฒด์ง€ํ–ฅ์„ ์ œ๋Œ€๋กœ ๊ณต๋ถ€ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ , ๊ฐ์ฒด์ง€ํ–ฅ์˜ 4๋Œ€ ํŠน์„ฑ ์ค‘ '์ถ”์ƒํ™”'์˜ ์ฐธ๋œ ์˜๋ฏธ๋ฅผ ์•Œ๊ธฐ๊นŒ์ง€ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค. ๊ฒฐ๋ก ์€ ๋งŽ์ด ๊ณต๋ถ€ํ•˜๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ํ™•์žฅํ•˜๊ณ  ์ ์šฉํ•ด ๋ด์•ผ ๊ทธ ์˜๋ฏธ๋ฅผ ๋น„๋กœ์†Œ ์ดํ•ดํ•˜๋ฆฌ๋ผ ์ƒ๊ฐํ•œ๋‹ค. ์ƒ์ˆ˜ const val NAME_PREFIX = "prefix" fun getName() : String = NAME_PREFIX + this.name ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์ถ”์ƒํ™” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ณธ ์ฝ”๋“œ์—์„œ String ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’์„ ๋”ฐ๋กœ ๋นผ์„œ ์ƒ์ˆ˜ํ™”๋ฅผ ์‹œํ‚ค๋ฉด ์ดํ•ด๋„ ์‰ฌ์šธ ๋ฟ ์•„๋‹ˆ๋ผ. ๋ณ€๊ฒฝํ•˜๊ธฐ๋„ ํ›จ์”ฌ ์ˆ˜์›”ํ•˜๋‹ค. ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’์— ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„์„ ๋ถ™์ผ ์ˆ˜ ์žˆ๊ณ , ๋ณ€๊ฒฝ์ด ์‰ฝ๋‹ค. ํ•จ์ˆ˜ ํŠน์ • ํ–‰์œ„๋ฅผ ํ•จ์ˆ˜๋กœ ์„ ์–ธํ•˜๋ฉด, ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” ๊ฐ„๋‹จํžˆ ํ™•์žฅ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด, ์ถ”์ƒ.. 2023. 1. 29.
[Effective Kotlin] ์•„์ดํ…œ 24. ์ œ๋„ค๋ฆญ ํƒ€์ž…๊ณผ variance ํ•œ์ •์ž๋ฅผ ํ™œ์šฉํ•˜๋ผ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์ ์šฉํ•˜๋ฉด์„œ ์ถ”์ƒํ™”๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ ๊ทน ํ™œ์šฉํ–ˆ์—ˆ๊ณ , ๊ฐ•ํƒ€์ž… ์–ธ์–ด์˜€๊ธฐ์— ํŠนํžˆ ํƒ€์ž…์„ ์ž˜ ํ™œ์šฉํ–ˆ์–ด์•ผ ํ–ˆ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ ์ œ๋„ค๋ฆญ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ๊ณต๋ณ€, ๋ฐ˜๊ณต๋ณ€ ์„ฑ ๋“ฑ์˜ ํŠน์ง•์„ ์ œ๋„ค๋ฆญ์ด ์–ด๋–ป๊ฒŒ ํ’€์–ด๋ƒˆ๋Š”์ง€ ๊ณต๋ถ€ํ–ˆ๋‹ค. extend, super ๋“ฑ์˜ ํ•œ์ •์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒ€์ž…์„ ์ ์ ˆํžˆ ์ œ์–ดํ–ˆ์—ˆ๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ œ๋„ค๋ฆญ์˜ ํ•œ์ •์ž๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ž๋ฐ”์˜ ๊ฒฐํ•จ์„ ๊ฐœ์„ ํ•˜๋ฉด์„œ ๋ง์ด์ง€. Out ํ•œ์ •์ž ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ณต๋ณ€์œผ๋กœ ๋งŒ๋“ ๋‹ค. class University open class Student class FreshMan : Student() fun main(args: Array) { val b: University = University() // OK val a: Universi.. 2023. 1. 27.
[Effective Kotlin] ์•„์ดํ…œ 23. ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์„€๋„์ž‰์„ ํ”ผํ•˜๋ผ ์„€๋„์ž‰์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? class Person(val name : String) { fun addPerson(name : String) { // ... } } addPerson() ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ Person class์˜ ํ”„๋กœํ„ฐํ‹ฐ ์ด๋ฆ„๊ณผ ๊ฐ™์•„์ง„๋‹ค. ์™ธ๋ถ€ ์Šค์ฝ”ํ”„์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€๋ฆฌ๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์„€๋„์ž‰์ด๋ผ ํ•œ๋‹ค. ์ด๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์ฐจ๋ฆฌ๊ธฐ ํž˜๋“  ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธด๋‹ค. ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ๋„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. interface Payment class KakaoPay: Payment class NaverPay: Payment class PaymentHistory { fun addPayment(payment: T) { // ... } } ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๋Š” PaymentHistory์˜ ์ œ๋„ค๋ฆญ ํƒ€์ž…๊ณผ addPayment()์˜ ํƒ€์ž… .. 2023. 1. 25.
[๊ฐ์ƒ๋ฌธ] Kotlin In Action์„ ์ฝ๊ณ  ํ˜„์žฌ ์ž…์‚ฌํ•œ ํšŒ์‚ฌ์—์„œ ๋ฐฑ์—”๋“œ ์–ธ์–ด๋Š” ์ฝ”ํ‹€๋ฆฐ ๊ธฐ๋ฐ˜์ด๋‹ค. ์ฝ”ํ‹€๋ฆฐ์— ๋น ๋ฅด๊ฒŒ ์ ์‘ํ•ด์•ผ ํ–ˆ๊ธฐ์—, ์ž…์‚ฌ ์ „ ๋ถ€ํ„ฐ ํ‹ˆํ‹ˆํžˆ ๊ฐœ๋…์„ ๊ณต๋ถ€ํ–ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ตฌ๊ธ€๊ณผ ์œ ํŠœ๋ธŒ๋Š” ์ •๋ณด์˜ ๋‚œ์žกํ•จ๊ณผ ํ•œ๊ณ„, ๊ทธ๋ฆฌ๊ณ  ์‹ ๋ขฐ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค. ํ™•์‹คํžˆ ์–ธ์–ด ๋ฐ ๋ฐฑ์—”๋“œ ๊ณต๋ถ€๋Š” ์ฑ…์ด ์ง„๋ฆฌ๋ผ๋Š” ๊ฒƒ์ด ๋‚ด ์ •๋ก ์ด๋‹ค..ใ…Žใ…Ž ์ž…์‚ฌ ์ฒซ ๋‚  ์‚ฌ์ˆ˜ ๋ถ„๊ป˜ ์ฝ”ํ‹€๋ฆฐ ๊ด€๋ จ ์„œ์ ์ด ์žˆ๋Š”์ง€ ์—ฌ์ญค๋ดค๊ณ , ๊ฐ์‚ฌํ•˜๊ฒŒ๋„ ํ”์พŒํžˆ [์ฝ”ํ‹€๋ฆฐ ์ธ ์•ก์…˜] ์ฑ…์„ ๋นŒ๋ ค์ฃผ์…จ๋‹ค. ์ฑ…์„ ๋“ค๊ณ  ํ‡ด๊ทผํ–ˆ๊ณ , ๊ทธ ๋‚  ๋ฐค๋ถ€ํ„ฐ ๋ฐ”๋กœ ์ฝ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ผ์ด ๋งŽ์€ ๋‚ , ๋„ˆ๋ฌด ํ”ผ๊ณคํ•œ ๋‚ ๊ณผ ์ผ์ •์ด ์žˆ๋Š” ๋‚ ์„ ์ œ์™ธํ•œ ๋ฐค 11์‹œ์—๋Š” 1์‹œ๊ฐ„ ๊ผญ ๋…์„œ๋ฅผ ํ•˜๊ณ  ์ž์ž๋Š” ๋‹ค์ง๊ณผ ํ•จ๊ป˜. ์ž˜ ์ฝํžˆ์ง€ ์•Š์„ ๊ฒƒ์„ ์—ผ๋ คํ–ˆ์ง€๋งŒ, ๋‹คํ–‰ํžˆ ์ด ์ฑ…์ด ์ง€ํ–ฅํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ”๋Š” ๊ธฐ์กด ์ž๋ฐ” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ๋Š” ๊ฒƒ์ด ์ฐธ ์ธ์ƒ ๊นŠ์—ˆ๋‹ค. ์ฑ…์€ ๊ธฐ์กด ์ž.. 2023. 1. 17.
์ผ์ฃผ์ผ ๊ฐ„ ํšŒ์‚ฌ ์ ์‘๊ธฐ ํšŒ์‚ฌ์— ์ž…์‚ฌํ•ด์„œ ์ผ์ฃผ์ผ ๊ฐ„ ์˜จ๋ณด๋”ฉ ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ๋‹ค. ๋น ๋ฅด๊ฒŒ ํ›‘์–ด ๋ณด์•˜์„ ๋•Œ ๋งŒ๋งŒ์น˜ ์•Š์€ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๊ธฐ๊ฐ„ ๋•Œ๋ฌธ์— ์‰ฝ์ง€ ์•Š์„ ๊ฑฐ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ์ฒซ ๋‚  ๋งฅ ์„ธํŒ…๋ถ€ํ„ฐ ์ •์‹ ์ด ์–ด์งˆ์–ด์งˆํ–ˆ๊ณ , ๋ฐฐํฌ ๋•Œ๋งŒ ์ž ๊น ์จ์˜ค๋˜ CLI๋„ ๋‚  ์ •์‹  ์—†๊ฒŒ ํ–ˆ๋‹ค. 5์ผ ๋™์•ˆ ๋งŽ์€ ํšŒ์˜์— ์ฐธ์„ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ์ด๋ฒˆ ์ผ์ฃผ์ผ ์˜จ๋ณด๋”ฉ์„ ํ™•์‹คํžˆ ๋๋‚ด๋†”์•ผ ๋‹ค์Œ์ฃผ๋ถ€ํ„ฐ ๋น„๋กœ์†Œ ๋‚ด ํ• ์ผ์„ ํ™•์‹คํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋ฌด์กฐ๊ฑด ๋๋‚ด๊ฒ ๋‹ค๋Š” ๋‹ค์ง์„ ํ–ˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ config ๋ฐ ๋„๋ฉ”์ธ ์„ค๊ณ„๊นŒ์ง€ ๊ฑฐ์ง„ 2, 3์ผ ์†Œ๋ชจํ–ˆ๋‹ค. ์ค‘๊ฐ„์— ์š”๊ตฌ์‚ฌํ•ญ์„ ๋‹ค์‹œ ๋ณด๊ฒŒ ๋˜์–ด ์ˆ˜์ •์— ์ˆ˜์ •์„ ๊ฑฐ๋“ญํ–ˆ๋‹ค. ๋งŽ์ด ์•ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ๋„๋ฉ”์ธ ์„ค๊ณ„๋Š” ํ™•์‹คํžˆ ๊พธ์ค€ํ•œ ์—ฐ์Šต์ด ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ž‘์„ฑํ•˜๊ณ  API.. 2023. 1. 8.
์ƒˆ๋กœ์šด ์‹œ์ž‘ ์ž์ทจ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ๋Š” ์ด์‚ฌ ๋•Œ๋ฌธ์— ์ •์‹ ์ด ์—†์—ˆ๋‹ค. ์–ด์ œ ๊ฒจ์šฐ ์ด์‚ฌ๋ฅผ ๋งˆ์น˜๊ณ  ํ•„์š”ํ•œ ์šฉํ’ˆ๋“ค์„ ๊ตฌ๋งคํ•œ ํ›„ ๊ฒจ์šฐ ์ •๋ฆฌ ๋ฐ ์•ˆ์ •์ด ๋˜์—ˆ๋‹ค. ๋‚˜์ค‘์— ํšŒ์‚ฌ๋ฅผ ๋‹ค๋‹ˆ๊ฒŒ ๋  ๊ฒฝ์šฐ, ์œ ์ผํ•˜๊ฒŒ ๋ฐฉํ•ด๋ฐ›์ง€ ์•Š๊ณ  ๊ณต๋ถ€ํ•˜๋ฉฐ ์—…๋ฌด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ํ•„์š”ํ–ˆ๊ธฐ์— ์ด์‚ฌ๋ฅผ ์ƒ๊ฐํ–ˆ์—ˆ๋‹ค. ์ž…์‚ฌํ•˜๊ฒŒ ๋˜์–ด ๊พธ์ค€ํ•œ ์ˆ˜์ž…์œผ๋กœ ์Šค์Šค๋กœ ์ž์ทจ ๋น„์šฉ์„ ์ถฉ๋‹นํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ , ๋ฐ”๋กœ ์‹คํ–‰์œผ๋กœ ์˜ฎ๊ฒผ๋‹ค. ์‹œ์ž‘์€ ๋ฏธ์•ฝํ•˜์ง€๋งŒ ๋ชฉํ‘œํ•˜๋Š” ์‚ถ์„ ๊ทธ๋ฆฌ๋ฉฐ ์ฃผ๊ฑฐ ๊ณต๊ฐ„์˜ ํ™•์žฅ์„ ๊พธ์ค€ํžˆ ์ด๋ค„๋‚˜๊ฐˆ ๊ฒƒ์ด๋‹ค. ์‹ ์ž… ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์˜ ๋น ๋ฅธ ์ ์‘์„ ์œ„ํ•ด ์งฌ์งฌ์ด ์ƒˆ๋กœ ์“ฐ๊ฒŒ ๋  ์–ธ์–ด์ธ ์ฝ”ํ‹€๋ฆฐ ๊ฐœ๋…์„ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋‹ค. ํ™•์‹คํžˆ ์•„์ง์€ ๋‚ฏ์„ค๋‹ค. ํ•ด์„œ ์ฝ”ํ‹€๋ฆฐ ์Šคํ”„๋ง ํ™˜๊ฒฝ์—์„œ DB ์—ฐ๋™๋„ ํ•ด๋ณด๊ณ  ์•„์ฃผ์•„์ฃผ ๊ฐ„๋‹จํ•œ api ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ดค๋‹ค. ํ•˜์ง€๋งŒ ์ธํ„ฐ๋„ท์œผ๋กœ๋งŒ ๋ณด๋Š” ๊ฑด ํ•œ๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. .. 2023. 1. 1.
[ํšŒ๊ณ ] 2022๋…„์„ ๋งˆ์น˜๋ฉฐ ์–ด์ œ ์™”๋˜ 2022๋…„์ด ๋ฒŒ์จ ๋๋‚˜ ๊ฐ„๋‹ค. ์—Š๊ทธ์ œ ๊ฐ™์•˜๋‹ค. 2022๋…„ 1์›” 1์ผ. 2021๋…„ 12์›” 31๊ณผ 2022๋…„ 1์›” 1์ผ ์•„๋งˆ๋„ ์ˆ˜์—…์ด ๋๋‚˜๊ณ  ์Šคํ„ฐ๋””๋ฅผ ์ง„ํ–‰ํ–ˆ์„ ๊ฒƒ์ด๋‹ค. ๋Š˜ ํ•ด์˜ค๋˜ ๋Œ€๋กœ ์Šคํ„ฐ๋””๊ฐ€ ๋๋‚˜๊ณ  ์ง‘๊ฐ€์„œ ์ •๋ฆฌ ์ฝ”๋”ฉ์„ ํ•˜๋ฉฐ ์ง€์ธ๋“ค๊ป˜ ์นดํ†ก ์ƒˆํ•ด ์ธ์‚ฌ๋ฅผ ๋“œ๋ฆฌ๊ณ  ์ž ์„ ์žค๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค. 24์‚ด๊ณผ 25์‚ด์˜ ๊ฒฝ๊ณ„, ๋ฐ˜ ์˜ค์‹ญ์ด ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ๊ทธ๋ ‡๊ฒŒ ๊ธฐ์˜์ง€๋„ ์Šฌํ”„์ง€๋„ ์•Š์•˜๋‹ค. ํฌ๊ฒŒ ์˜๋ฏธ ๋ถ€์—ฌํ•  ์—ฌ์œ ๊ฐ€ ์—†์—ˆ์„ ๊ฒƒ์ด๋ฆฌ๋ผ. 2022๋…„, ๋‚œ ๋ฌด์—‡์„ ์ด๋ฃจ๊ณ ์ž ํ–ˆ๋Š”์ง€ ์˜ค๋กœ์ง€ ๊ฐœ๋ฐœ์—๋งŒ ์ง‘์ค‘ํ–ˆ๋˜ 2022๋…„์ด๋‹ค. ๋ƒ‰์ •ํ•˜์ง€๋งŒ, ์นœ๊ตฌ๋“ค์—๊ฒŒ ํˆฌ์žํ•˜๋Š” ์‹œ๊ฐ„์กฐ์ฐจ ์•„๊นŒ์› ๋‹ค. ์•ฝ์†์„ ๋งŽ์ด ๋ชป ๋‚˜๊ฐ€์„œ ์นœ๊ตฌ๋“ค์ด ์„œ์šดํ•ดํ•˜๊ฑฐ๋‚˜ ๊ฐ์ •์ด ์ƒํ–ˆ์„์ง€๋„ ๋ชจ๋ฅด๊ฒ ๋‹ค. ํ•˜์ง€๋งŒ ์ข…์ข… Burned ์ƒํƒœ๊ฐ€ ๋˜๋ฉด, ์‚ฌ๋žŒ ๋งŒ๋‚˜๊ธธ ์ข‹์•„ํ•˜๋Š” ๋‚ด๊ฐ€ ์นœ๊ตฌ๋ฅผ ์ฐพ๊ธด ํ–ˆ์ง€๋งŒ... 2022. 12. 29.
[@DataJpaTest] h2 ์ธ๋ฉ”๋ชจ๋ฆฌ db๋ฅผ ์ด์šฉํ•œ ํ…Œ์ŠคํŠธ ์„ค์ • ๋ฐฉ๋ฒ• ์„œ๋ก  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ตํžˆ ๋“ค์—ˆ๊ณ , ํ•„์ˆ˜์ ์ธ ์˜์—ญ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด์— ํ•ญ์ƒ ๋งŒ์ „์„ ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค. ๋ชจ๋“  ์ผ€์ด์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ด์œ ๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์—, ํฌ๊ฒŒ ๊ฒฝ์šฐ๋ฅผ ๋‚˜๋ˆ„์–ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ์‹œ๋‚˜๋ฆฌ์˜ค, ํ†ตํ•ฉ, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ๋‚˜๋ˆ„์–ด ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋ผ๊ณ  ๋“ค์—ˆ๋‹ค. ๋ฐฐํฌ๋ฅผ ๊ณ„์† ํ•ด์˜ค๋ฉด์„œ jar ํŒŒ์ผ์„ ๋นŒ๋“œํ•˜๋Š” ๋„์ค‘ ํ…Œ์ŠคํŠธ๋ฅผ ์ œ์™ธํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์˜๋ฏธํ•˜๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ๋“  ๋Œ์•„ ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ๊ณ ๋ฏผ์„ ํ–ˆ๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋‚˜ํ•˜๋‚˜ ์™„์„ฑ๋„ ์žˆ๊ฒŒ ์Œ“์•„๋‚˜๊ฐ€๋Š” ๊ณต๋ถ€๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์†๋„๋Š” ๋Š๋ฆฌ์ง€๋งŒ, ์œ ์˜๋ฏธํ•œ ๋ฐœ์ „ ๊ณผ์ •์ด๋ผ ๋Š๋‚€๋‹ค. ์ด๋ฒˆ์— ๋Œ€๊ทœ๋ชจ ๋ฆฌํŒฉํ† ๋ง์„ ์‹ค์‹œํ•˜๋ฉด์„œ ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ๊ตฌ์กฐ๊ฐ€ ํฌ๊ฒŒ ๊ฐœํŽธ๋˜์—ˆ๊ณ , ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋งŽ์ด ์ƒ๊ฒจ์„œ ๋‹ค ์ˆ˜์ •ํ–ˆ๋‹ค. persi.. 2022. 12. 21.
[๋ฆฌํŒฉํ† ๋ง] ๋„๋ฉ”์ธ ๋ชจ๋ธ ์ค‘์‹ฌ Clean Architecture ๋กœ์˜ ๋ฆฌํŒฉํ† ๋ง ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜๋„ ์—†์ด ๋ฆฌํŒฉํ† ๋งํ–ˆ๋‹ค. ๋ณด๋‹ค ๋” ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ, ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ, ๋” ์ž‘์€ ๊ฐ์ฒด๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ๊ณ„์†ํ•ด์„œ ๊ณ ๋ฏผํ•˜๊ณ  ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ–ˆ๋‹ค. ์ง€๋‚œ ๋‹ฌ๋ถ€ํ„ฐ ํ•ด์„œ ์†Œํ”„ํŠธ ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์— ๊ด€ํ•ด์„œ ๊ด€์‹ฌ์ด ์ƒ๊ฒผ๋‹ค. ํด๋ฆฐ ์ฝ”๋“œ๋ฅผ ์ถ”๊ตฌํ•˜๋‹ค ๋ณด๋‹ˆ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์„ค๊ณ„์  ๊ณ ๋ฏผ์œผ๋กœ ๊ท€๊ฒฐ๋˜์—ˆ๋‹ค. ์›ํ‹ฐ๋“œ ๋ฐฑ์—”๋“œ ์ฑŒ๋ฆฐ์ง€๋ฅผ ํ•˜๋ฉฐ ์•Œ๊ฒŒ๋œ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜, ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„ ์ฒ ์ € ์ž…๋ฌธ, ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋ฅผ ์ฝ์–ด๊ฐ€๋ฉฐ, ๋‚ด๊ฐ€ ๊ตฌ์„ฑํ•ด์˜ค๋˜ ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์˜ ํฐ ์ „ํ™˜์ ์„ ๋งž์ดํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ๋งŒ์„ ๋งŒ๋“œ๋Š”๊ฒŒ ์•„๋‹Œ ๋ณธ ํ”„๋กœ์ ํŠธ์— ์ด๋ฅผ ์ ์šฉ์‹œ์ผœ๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. MSA ๋Š” ์˜ค๋ฒ„ ์—”์ง€๋‹ˆ์–ด๋ง์ด๋ผ ํŒ๋‹จํ–ˆ๊ณ , ๋ชจ๋…ธ๋ฆฌ์Šค ๊ตฌ์กฐ์ด์ง€๋งŒ ์ตœ๋Œ€ํ•œ ๋„๋ฉ”์ธ ๋ณ„ ๋ถ„๋ฆฌ๊ฐ€ ๋œ ์ƒ์œ„ ๋ฐ”์šด๋””๋“œ ์ปจํ….. 2022. 12. 12.
[๊ฐ์ƒ๋ฌธ] <๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ๊ฐœ๋ฐœ> ์„ ์ฝ๊ณ  ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„ ์ฒ ์ € ์ž…๋ฌธ๊ณผ ๊ฐ™์ด ๊ตฌ๋งคํ•œ ์ฑ…์ด๋‹ค. DDD ์™€ MSA ๋ผ๋‹ˆ ์ œ๋ชฉ์ด ๋งค์šฐ ํฅ๋ฏธ๋กœ์› ๊ณ , ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ์ •์„์ ์ธ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ๋ฐ ์ฝ”๋“œ ์ž‘์„ฑ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ฒซ ์žฅ์€ ์•„๋งˆ์กด์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฏผ์ฒฉ์„ฑ์˜ ๋น„๋ฐ€ ๋‚ด์šฉ์„ ์„ค๋ช…ํ•˜๋ฉฐ ์•„๋งˆ์กด ๋งŒ์˜ ๋น ๋ฅธ ๋ฐฐํฌ ์†๋„์˜ ๋…ธํ•˜์šฐ์™€, ํ˜„์žฌ ๊ฐ€์žฅ ๋Œ€์ค‘ํ™”๋œ ์ธํ”„๋ผ์ธ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๋‚ด์—์„œ ์–ด์šธ๋ฆฌ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์กฐ๊ฑด์„ ์„ค๋ช…ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค์˜ ์†Œ๊ฐœ๋กœ ์ด์–ด์ง„๋‹ค. ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋Š” ๊ธฐ์กด ๋ชจ๋…ธ๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜์™€ ๋‹ค๋ฅด๊ฒŒ ์„ค๊ณ„์— ๊ฐ๋ณ„ํžˆ ์‹ ๊ฒฝ์„ ์จ์•ผ ํ•œ๋‹ค. ์ƒ๋Œ€์ ์œผ๋กœ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๋” ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ด์ง€๋งŒ, ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๋ฌธ์ œ๊ฐ€ ๊ฐ€์žฅ ํฐ ์ด์Šˆ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜๋งŽ์€ ํŒจํ„ด๋“ค์„ ์†Œ๊ฐœํ–ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์—์„œ๋„ ์ •ํ•ฉ์„ฑ์„.. 2022. 12. 9.
[๊ฐ์ƒ๋ฌธ] ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„ ์ฒ ์ € ์ž…๋ฌธ์„ ์ฝ๊ณ  ๋‚˜์„œ ์ด ์ฑ…์„ ์ฝ์€ ์ด์œ ๋Š” ์ฐธ ์›ƒํ”„๋‹ค. โ€‹ ์‚ฌ์•ผ ํ•  ์ฑ…์„ ์ฐฉ๊ฐํ–ˆ๋‹ค.. ใ…Žใ…Ž ์ฐฉ๊ฐํ•˜๊ณ  ์ž˜๋ชป ๊ตฌ๋งคํ•œ ์ฑ…์ด๋‹ค. ๋‹น๊ทผ๋Ÿฌ์—๊ฒŒ ๊ตฌ๋งคํ•œ ์ฑ…์ด๋ผ ํ™˜๋ถˆ์€ ์–ด๋ ต๊ณ  ๋‹ค์‹œ ๋ฌผ์–ด๋ณด๊ธฐ ๊ท€์ฐฎ์•„์„œ ๊ทธ๋ƒฅ ์ฝ๊ธฐ๋กœ ํ–ˆ๋‹ค. โ€‹ ์ฝ”๋“œ๊ฐ€ C# ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ๊ณ , ์ €์ž๋„ ์ผ๋ณธ ์‚ฌ๋žŒ์ด๋ผ์„œ ์•ˆ ์ฝํž ๊ฒƒ ๊ฐ™์•˜๋‹ค. ๋Œ€์ถฉ ๋ณด๋‹ค๊ฐ€ ์•ˆ ์ฝํžˆ๋ฉด ๋‹น๊ทผ์— ํŒ๋งคํ•˜๋ ค๊ณ  ํ–ˆ์—ˆ๋‹ค. โ€‹ ๋‹คํ–‰ํžˆ C#์„ ์ข€ ํ•ด์„œ ๊ทธ๋Ÿฐ์ง€ (์˜ˆ์ œ ์ฝ”๋“œ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€ ์•Š์•˜๋‹ค) ๊ทธ๋Ÿญ์ €๋Ÿญ ์ดํ•ดํ•ด๊ฐ€๋ฉฐ ์™„๋…ํ–ˆ๋‹ค. โ€‹ โ€‹ ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„๋‹ˆ ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜, ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋‹ˆ ์„ค๋ช…ํ•˜๋Š” ๊ฐœ๋…๋“ค์€ ๋‹ค ์˜ค๊ฐ€๋‹ค๊ฐ€ ๋ฐฐ์šฐ๊ณ  ๋ด์™”๋˜ ์ฝ”๋“œ ๊ตฌ์„ฑ์ด ์งฌ์งฌ์ด ์žˆ์—ˆ๋‹ค. ๊ทธ๋• ๊ทธ๋ ‡๊ฒŒ ์จ์•ผ ๋˜๋‚˜ ๋ณด๋‹ค ํ•˜๊ณ  ์•ต๋ฌด์ƒˆ์ฒ˜๋Ÿผ ์™ธ์›Œ์„œ ์ผ๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค. โ€‹ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉฐ ์ดํ•ด๊ฐ€ ๋’ท๋ฐ›์นจ๋˜์ง€ ๋ชปํ•œ ํ‹€์„ ๊นจ๊ณ  ๊ทธ๋ƒฅ ์ •์„๋Œ€๋กœ ์ฝ”๋“œ ์ž‘์„ฑ์„ ํ–ˆ์—ˆ.. 2022. 11. 27.
[์ด์Šˆ] Pageable test ๊ด€๋ จ ์—๋Ÿฌ ๐Ÿ’ก๋ฌธ์ œ API Controller๋ฅผ ํ…Œ์ŠคํŠธ ํ•˜๋Š”๋ฐ ์ž˜ ์„ฑ๊ณตํ•˜๋˜ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ณ„์† ์‹คํŒจํ•œ๋‹ค. org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: No primary or single unique constructor found for interface org.springframework.data.domain.Pageable ํ…Œ์ŠคํŠธ ์ฝ”๋“œ mockMvc.perform(get("/api/v2/users") .param("page", String.valueOf(page))) .andExpect(status().isOk()) .andE.. 2022. 11. 23.
[ํšŒ๊ณ ] ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ์ฑ… ์Šคํ„ฐ๋”” ๋ฐ ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ์น˜๋ฉฐ ์ตœ๊ทผ ์‹ ์ž… ๊ฐœ๋ฐœ์ž๋กœ์˜ ์—ฌ์ •์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์ฑ„์šฉ ์—ฐ๊ณ„ํ˜• ์ธํ„ด์‹ญ, ์‹ ์ž… ๊ณต์ฑ„๋ฅผ ๋ณด๊ณ  ํ™•์ธํ•˜๋ฉฐ ์„œ๋ฅ˜ ์ง€์›์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์—ฌ์ „ํžˆ ํ•  ์ผ์€ ์‚ฐ๋”๋ฏธ์ง€๋งŒ, ์กฐ๊ธˆ ๋” ์‹œ๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ์จ๊ฐ€๋ฉฐ ๋ฐœ์ „ํ•˜๊ณ  ์‹ถ๊ธฐ์— ์ฝ๊ณ  ์‹ถ์—ˆ๋˜ ์ฑ…์„ ๊ฐ€์ง€๊ณ  ์Šคํ„ฐ๋””๋ฅผ ํ•˜๋ฉด ์–ด๋–จ๊นŒ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ์—ˆ๋‹ค. ๋งˆ์นจ ๊ฐ™์€ ์—ฌ์ • ๊ธธ์— ์˜ฌ๋ผ์žˆ๋Š” ์นœ๊ตฌ๊ฐ€ ๋– ์˜ฌ๋ž๊ณ , ์ œ์•ˆ์„ ์ˆ˜๋ฝํ•˜์—ฌ ๋งŒ๋“ค๋ฉด์„œ ๋ฐฐ์šฐ๋Š” ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ผ๋Š” ์ฑ…์„ ๊ฐ€์ง€๊ณ  2์ฃผ ๊ฐ„์˜ ์Šคํ„ฐ๋””๋ฅผ ๋งˆ์ณค๋‹ค. ์ด ์ฑ…์„ ์ฝ๊ณ  ์†Œํ”„ํŠธ์›จ์–ด์˜ ์„ค๊ณ„์  ๊ณ ๋ฏผ์— ํ•œ์ธต ๋” ๊นŠ์ด ๋น ์ง€๊ฒŒ ๋จ๊ณผ ๋™์‹œ์— ์ƒˆ๋กœ์šด ์„ธ์ƒ์œผ๋กœ์˜ ๋ฐœ์„ ๋””๋”˜ ๋Š๋‚Œ์ด ๋“ค์—ˆ๋‹ค. ์„ค๊ณ„ ๋‚ด์šฉ์€ ํ‰์†Œ์— ๊ฐ€์žฅ ๋งŽ์ด ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„์ธ์ง€๋ผ ์ฑ…์ด ์ดํ•ด๊ฐ€ ์ž˜ ๋˜์—ˆ์—ˆ๊ณ , ์• ๋งคํ–ˆ๋˜ ๋ถ€๋ถ„์„ 2ํšŒ๋…, ๋‹ค๋ฅธ ๊ด€์ ์œผ๋กœ ์ฝ์–ด๋ณด๋ ค 3 ํšŒ๋…ํ•˜๋ฉฐ ์™„๋…์„ ํ–ˆ๋‹ค. ์ฃผ๊ด€์ ์ด์ง€๋งŒ ๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉฐ ๋“œ๋Š” ์ƒ๊ฐ.. 2022. 11. 20.
[๋งŒ๋“ค๋ฉด์„œ ๋ฐฐ์šฐ๋Š” ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜] Chapter10. ์•„ํ‚คํ…์ฒ˜ ๊ฒฝ๊ณ„ ๊ฐ•์ œํ•˜๊ธฐ 10. ์•„ํ‚คํ…์ฒ˜ ๊ฒฝ๊ณ„ ๊ฐ•์ œํ•˜๊ธฐ 1. ๊ฒฝ๊ณ„์™€ ์˜์กด์„ฑ ์•„ํ‚คํ…์ฒ˜์˜ ๊ฒฝ๊ณ„์™€ &#39;๊ฒฝ๊ณ„๋ฅผ ๊ฐ•์ œํ•œ๋‹ค๋Š” ๊ฒƒ&#39;์˜ ์˜๋ฏธ๋ฅผ ์•Œ์•„๋ณด์ž. ์•„ํ‚คํ…์ฒ˜์˜ ๊ฒฝ๊ณ„๋ฅผ ๊ฐ•์ œํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์˜์กด์„ฑ์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์„ ํ–ฅํ•˜๋„๋ก ๊ฐ•์ œํ•˜๋Š” ๊ฒƒ. ๊ฐ€์žฅ ์•ˆ์ชฝ ๊ณ„์ธต ๋„๋ฉ”์ธ ์—”ํ‹ฐํ‹ฐ ๋„๋ฉ”์ธ ์—”ํ‹ฐํ‹ฐ์— ์ ‘๊ทผํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ์œ ์Šค์ผ€์ด์Šค ๊ตฌํ˜„ ์–ด๋Œ‘ํ„ฐ ์ธ์ปค๋ฐ ํฌํŠธ๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค ์ ‘๊ทผ ์„œ๋น„์Šค ์•„์›ƒ๊ณ ์ž‰ ํฌํŠธ๋ฅผ ํ†ตํ•ด ์–ด๋Œ‘ํ„ฐ ์ ‘๊ทผ ์„ค์ • ๊ณ„์ธต ์–ด๋Œ‘ํ„ฐ & ์„œ๋น„์Šค ๊ฐ์ฒด ์ƒ์„ฑ์šฉ ํŒฉํ„ฐ๋ฆฌ ํฌํ•จ ์˜์กด์„ฑ ์ฃผ์ž… ๋งค์ปค๋‹ˆ์ฆ˜ ์ œ๊ณต ์˜์กด์„ฑ์€ ํ•ญ์ƒ ์•ˆ์ชฝ์œผ๋กœ ํ–ฅํ•ด์•ผ ํ•œ๋‹ค. 2. ์ ‘๊ทผ ์ œํ•œ์ž package-private ์ œํ•œ์ž์˜ ์ค‘์š”์„ฑ ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ํด๋ž˜์Šค๋“ค์„ ์‘์ง‘๋œ ๋ชจ๋“ˆ๋กœ์„œ ๋งŒ๋“ค์–ด์ค€๋‹ค. ํŒจํ‚ค์ง€ ๋ฐ”๊นฅ ์„œ๋Š” ์ ‘๊ทผ ๋ถˆ๊ฐ€. ๋ชจ๋“ˆ ์ง„์ž…์šฉ ํด๋ž˜์Šค๋งŒ ๋”ฐ๋กœ public์œผ๋กœ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค. ๊ฒฝ๊ณ„๊ฐ„ ์™ธ๋ถ€๋กœ.. 2022. 11. 15.
๋ฐ˜์‘ํ˜•