๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กJava (9)

<Hello Hosung๐Ÿ˜Ž/>

[Node.js] OAuth2 ๋กœ๊ทธ์ธ - 2(Google Login)

๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด, OAuth 2.0 ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ Google API์™€ ์—ฐ๋™ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” Node.js + Express ๊ธฐ๋ฐ˜์˜ ๊ฐ„๋‹จํ•œ Google ๋กœ๊ทธ์ธ ๊ตฌํ˜„ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.์‚ฌ์ „ ์ค€๋น„Google Cloud Console์—์„œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑGoogle Cloud Console์— ์ ‘์†.์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒ.OAuth ๋™์˜ ํ™”๋ฉด ์„ค์ •:์‚ฌ์šฉ์ž ์œ ํ˜• ์„ ํƒ(์™ธ๋ถ€/๋‚ด๋ถ€).ํ•„์ˆ˜ ์ •๋ณด ์ž…๋ ฅ(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„, ์ด๋ฉ”์ผ ๋“ฑ).OAuth 2.0 ํด๋ผ์ด์–ธํŠธ ID ์ƒ์„ฑ:์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์œ ํ˜•: ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ ํƒ.์Šน์ธ๋œ ๋ฆฌ๋””๋ ‰์…˜ URI ์ถ”๊ฐ€: ์˜ˆ) http://localhost:3000/auth/google/callbackํด๋ผ์ด์–ธํŠธ ID์™€ ํด๋ผ์ด์–ธํŠธ ๋น„๋ฐ€ ํ‚ค(Client Secret)๋ฅผ ๋ณต์‚ฌ..

[Java] ๋””์ž์ธ ํŒจํ„ด

๋””์ž์ธ ํŒจํ„ด์ด๋ž€ ?๋””์ž์ธ ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ๋””์ž์ธ ํŒจํ„ด์€ ํŠน์ •ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฏธ ๊ฒ€์ฆ๋œ ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ํšจ์œจ์„ฑ๊ณผ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋””์ž์ธ ํŒจํ„ด์˜ ๋ถ„๋ฅ˜๋””์ž์ธ ํŒจํ„ด์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๋ฒ”์ฃผ๋กœ ๋‚˜๋ˆ ์ง‘๋‹ˆ๋‹ค: ์ƒ์„ฑ ํŒจํ„ด (Creational Patterns): ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ๊ด€๋ จ๋œ ํŒจํ„ด ๊ตฌ์กฐ์  ํŒจํ„ด (Structural Patterns): ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ๊ด€๊ณ„๋ฅผ ์กฐ์งํ•˜๋Š” ํŒจํ„ด ํ–‰๋™ ํŒจํ„ด (Behavioral Patterns): ๊ฐ์ฒด ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ๊ณผ ์ฑ…์ž„์„ ์ •์˜ํ•˜๋Š” ํŒจํ„ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฐ” ๋””์ž์ธ ํŒจํ„ด(1) ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด (Singleton Pattern) ๋ชฉ์ : ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ์กด..

[Java] ๋””์ž์ธ ํŒจํ„ด - ์‹ฑ๊ธ€ํ†ค

์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด์€ ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์˜ค์ง ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ ํ•„์š”ํ•˜๊ฑฐ๋‚˜, ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ๊ณต์œ ํ•ด์•ผ ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์ด๋‚˜ ๋กœ๊ทธ ์ฒ˜๋ฆฌ๊ธฐ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. 1. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์˜ ํ•ต์‹ฌ ํŠน์ง•์˜ค์ง ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ ์ƒ์„ฑ๋˜๋ฉฐ, ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.๊ธ€๋กœ๋ฒŒ ์ ‘๊ทผ์„ ์ œ๊ณตํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์–ด๋””์„œ๋“  ํ•ด๋‹น ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ธ์Šคํ„ด์Šค๋ฅผ ์ „์—ญ์œผ๋กœ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. 2. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ๊ตฌํ˜„ ์˜ˆ์ œ (Java)๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ Java๋กœ ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ฝ”๋“œ: ๊ธฐ๋ณธ ์‹ฑ๊ธ€ํ†ค ๊ตฌํ˜„public class Singleton { // ์ •์  ๋ณ€์ˆ˜๋กœ ์‹ฑ..

๐Ÿ’ป Java 2024. 11. 13. 22:34
[Java] ์ง๋ ฌํ™”(Serialization)๋ž€?

Java์—์„œ **์ง๋ ฌํ™”(Serialization)**๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ, ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์„ ๋‹ค์‹œ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ **์—ญ์ง๋ ฌํ™”(Deserialization)**๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ง๋ ฌํ™”๋Š” ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์˜์†ํ™”ํ•˜๊ฑฐ๋‚˜ ์›๊ฒฉ ํ†ต์‹ ์—์„œ ๊ฐ์ฒด๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์— ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ์ง๋ ฌํ™”๊ฐ€ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ธ”๋กœ๊ทธ์—์„œ๋Š” Java์—์„œ ์ง๋ ฌํ™”๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์˜ˆ์ œ ์ฝ”๋“œ๋กœ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ์ง๋ ฌํ™”์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์ง๋ ฌํ™”๋Š” ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ง๋ ฌํ™”๋œ ๊ฐ..

[Java] ์ƒ์†์— ๋Œ€ํ•ด ์‰ฝ๊ฒŒ ์•Œ์•„๋ณด์ž๐Ÿง

์ž๋ฐ”๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP) ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๋Š” "์ƒ์†"์ž…๋‹ˆ๋‹ค. ์ƒ์†์„ ํ™œ์šฉํ•˜๋ฉด ๊ธฐ์กด์˜ ํด๋ž˜์Šค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” ์ž๋ฐ” ์ƒ์†์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์‹ค์ œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๋ช… ๋“œ๋ฆด๊ฒŒ์š”๐Ÿ˜€ 1. ์ƒ์†์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? **์ƒ์†(Inheritance)**์€ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ๋ฌผ๋ ค๋ฐ›๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๋ถ€๋ชจ ํด๋ž˜์Šค(์ƒ์œ„ ํด๋ž˜์Šค)์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค(ํ•˜์œ„ ํด๋ž˜์Šค)์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฏ€๋กœ, ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ค„์ด๊ณ  ํšจ์œจ์ ์ธ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์†์˜ ๊ธฐ๋ณธ ๊ตฌ๋ฌธclass ๋ถ€๋ชจํด๋ž˜์Šค { // ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์†์„ฑ..

[Java] ์ธํ„ฐํŽ˜์ด์Šค๋ž€?

์ž๋ฐ” ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํด๋ž˜์Šค๊ฐ€ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•˜๋Š” ์ถ”์ƒ์ ์ธ ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฉ”์„œ๋“œ์˜ ์„ ์–ธ๋งŒ ํฌํ•จํ•˜๊ณ , ๋ฉ”์„œ๋“œ ๋ณธ์ฒด(๊ตฌํ˜„)๋Š” ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„(implement)ํ•˜๋ฉด, ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋œ ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ฃผ๋œ ๋ชฉ์ ์€ ๋‹คํ˜•์„ฑ์„ ์ œ๊ณตํ•˜๊ณ , ๋А์Šจํ•œ ๊ฒฐํ•ฉ์„ ์œ ๋„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋“ค์ด ๋™์ผํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ์ฝ”๋“œ์˜ ์œ ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๋†’์ด๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์ธํ„ฐํŽ˜์ด์Šค๋Š” interface ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Animal์ด๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ณ , sound()๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.interface Animal { void..

[Java] ํŒŒ์ผ ์ž…์ถœ๋ ฅ (IO) ์ดํ•ดํ•˜๊ธฐ

Java์—์„œ ํŒŒ์ผ ์ž…์ถœ๋ ฅ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ฝ์–ด๋“ค์ด๊ธฐ ์œ„ํ•ด ํ•„์ˆ˜์ ์ธ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์˜์†์„ฑ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ํŒŒ์ผ ์ž…์ถœ๋ ฅ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์ž์ฃผ ์“ฐ์ด๋Š” ํด๋ž˜์Šค๋“ค, ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ํŒŒ์ผ ์ž…์ถœ๋ ฅ์„ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ํŒŒ์ผ ์ž…์ถœ๋ ฅ ๊ธฐ๋ณธ ๊ฐœ๋…Java์˜ ์ž…์ถœ๋ ฅ์€ ์ŠคํŠธ๋ฆผ(Stream) ๊ฐœ๋…์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ „์†กํ•˜๋Š” ํ๋ฆ„์œผ๋กœ, Java๋Š” ์ด๋ฅผ ํ†ตํ•ด ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ž…์ถœ๋ ฅ์—๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ: InputStream, OutputStream์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ดํŠธ(byte) ๋‹จ์œ„๋กœ ์ฝ๊ณ  ์”๋‹ˆ๋‹ค. ์ฃผ๋กœ ์ด๋ฏธ์ง€, ..

[SpringBoot] ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection) ๊ฐœ๋…๊ณผ ํ™œ์šฉ

Spring Boot๋Š” ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection, DI)์„ ํ†ตํ•ด ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ๊ด€๊ณ„ ์„ค์ •์„ Spring ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹ด๋‹นํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ , ๊ฐ์ฒด๋“ค์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” Spring Boot์—์„œ ์˜์กด์„ฑ ์ฃผ์ž…์˜ ๊ฐœ๋…๊ณผ ์‹ค์ œ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection)๋ž€? **์˜์กด์„ฑ ์ฃผ์ž…(DI)**์€ ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ , ์™ธ๋ถ€์—์„œ ์˜์กด ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…๋ฐ›๋„๋ก ํ•˜๋Š” ์„ค๊ณ„ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด๊ฐ€ ์ž์‹ ์˜ ์˜์กด์„ฑ์„ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ๋Œ€์‹ , Spring๊ณผ ๊ฐ™์€ IoC(Inversion ..

[Java] ์†Œ์ผ“ํ†ต์‹ ์˜ ๊ธฐ์ดˆ(+์ฑ„ํŒ…๐Ÿง)

์†Œ์ผ“(Socket)์€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์–‘๋ฐฉํ–ฅ ํ†ต์‹  ์ฑ„๋„์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” java.net ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์ž๋ฐ” ์†Œ์ผ“ ํ†ต์‹ ์„ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ์ฑ„ํŒ… ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.1. ์†Œ์ผ“ ํ†ต์‹ ์˜ ๊ธฐ๋ณธ ์ดํ•ด์†Œ์ผ“ ํ†ต์‹ ์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:์„œ๋ฒ„(Server): ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์™€ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ํด๋ผ์ด์–ธํŠธ(Client): ์„œ๋ฒ„์— ์ ‘์†ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์—ญํ• ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋Œ€๊ธฐํ•˜๋ฉฐ ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” InputStream๊ณผ OutputStream์„ ํ†ตํ•ด ์ฃผ๊ณ ๋ฐ›์Šต๋‹ˆ๋‹ค.2. ์ฑ„ํŒ… ์„œ๋ฒ„ ๊ตฌํ˜„์ฑ„ํŒ… ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์„ ๋ฐ›๊ณ , ๋ฉ”์‹œ์ง€๋ฅผ ํด๋ผ์ด..