๋ชฉ๋กJava (13)

<Hello Hosung๐Ÿ˜Ž/>

2ํŽธ - Spring Boot Filter ์„ค๊ณ„

1. Filter๋ž€ ๋ฌด์—‡์ธ๊ฐ€Filter๋Š” Servlet ์ŠคํŽ™์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๊ฐ€๋กœ์ฑ„์–ด ๊ณตํ†ต ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ์ด๋‹ค.Spring Boot์—์„œ๋Š” DispatcherServlet ์ด์ „ ๋‹จ๊ณ„์—์„œ ์‹คํ–‰๋œ๋‹ค.์ฆ‰ ์š”์ฒญ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.Client ↓Filter ↓DispatcherServlet ↓Spring MVC ๋”ฐ๋ผ์„œ Filter๋Š” Spring MVC์™€ ๊ด€๊ณ„์—†์ด ๋ชจ๋“  ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.2. Filter์˜ ์ฃผ์š” ์‚ฌ์šฉ ๋ชฉ์ ์‹ค๋ฌด์—์„œ Filter๋Š” ๋ณดํ†ต ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.1) ์š”์ฒญ ๋กœ๊ทธ ๊ธฐ๋กGET /users/1POST /orders API ์š”์ฒญ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธธ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. 2) TraceId ์ƒ์„ฑ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์š”์ฒญ ํ•˜๋‚˜๋ฅผ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•œ ID๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.์˜ˆ..

Java/ใ…คJava(SpringBoot) 2026. 3. 10. 16:29
[SpringBoot] Spring Security๋ฅผ ํ™œ์šฉํ•œ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ

Spring Security๋Š” Spring ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ธ์ฆ(authentication) ๋ฐ ๊ถŒํ•œ(authorization) ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ด ๋ธ”๋กœ๊ทธ์—์„œ๋Š” Spring Security๋ฅผ ์„ค์ •ํ•˜๊ณ , ๊ธฐ๋ณธ์ ์ธ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.1. Spring Security ์†Œ๊ฐœSpring Security๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ค‘์š”ํ•œ ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:์ธ์ฆ(Authentication): ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •.๊ถŒํ•œ(Authorization): ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ํ™•์ธํ•˜๋Š” ๊ณผ์ •.2. Spring Security ์„ค์ •ํ•˜๊ธฐ2.1. ์˜์กด์„ฑ ์ถ”๊ฐ€Spring Security๋ฅผ ํ”„๋กœ์ ํŠธ..

Java/ใ…คJava(SpringBoot) 2024. 11. 23. 22:34
[Spring] AOP ๊ฐœ๋…๋ถ€ํ„ฐ ๋กœ๊น… ์˜ˆ์ œ๊นŒ์ง€ ํ•œ ๋ฒˆ์— ์ดํ•ดํ•˜๊ธฐ

Spring AOP๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? Spring AOP(Aspect-Oriented Programming)๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•œ๊ณ„๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. AOP๋Š” '๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ'์œผ๋กœ, ํ”„๋กœ๊ทธ๋žจ์˜ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์™ธ์— ๊ณตํ†ต์ ์ธ ๊ธฐ๋Šฅ(์˜ˆ: ๋กœ๊น…, ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ๋“ฑ)์„ ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ์ค‘๋ณต์„ ์ค„์ด๊ณ , ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ AOP๋Š” ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ๋Š” ๋ณ„๋„๋กœ "๊ด€์ (Aspect)"์ด๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณตํ†ต๋œ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ชจ๋“ˆํ™”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๋Š” ๊ธฐ๋Šฅ์ด๋‚˜ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ๋ฅผ AOP๋ฅผ ํ†ตํ•ด ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AOP์˜ ํ•ต์‹ฌ ๊ฐœ๋… Aspect (๊ด€์ ): ํ•ต์‹ฌ ๋กœ์ง์— ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ..

Java/ใ…คJava(SpringBoot) 2024. 11. 17. 21:28
[Java] ๋””์ž์ธ ํŒจํ„ด

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

Java/ใ…คJava(Basic) 2024. 11. 14. 23:25
[Java] ๋””์ž์ธ ํŒจํ„ด - ์‹ฑ๊ธ€ํ†ค

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

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

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

Java/ใ…คJava(Basic) 2024. 11. 12. 14:25
[Java] ์ธํ„ฐํŽ˜์ด์Šค๋ž€?

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

Java/ใ…คJava(Basic) 2024. 11. 10. 20:34
[Java] ํŒŒ์ผ ์ž…์ถœ๋ ฅ (IO) ์ดํ•ดํ•˜๊ธฐ

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

Java/ใ…คJava(Basic) 2024. 11. 9. 16:27
[SpringBoot] ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection) ๊ฐœ๋…๊ณผ ํ™œ์šฉ

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

Java/ใ…คJava(SpringBoot) 2024. 11. 8. 08:19
[Java] ์†Œ์ผ“ํ†ต์‹ ์˜ ๊ธฐ์ดˆ(+์ฑ„ํŒ…๐Ÿง)

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

Java/ใ…คJava(Basic) 2024. 11. 7. 06:54