| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- @scheduler
- Jenkins
- MySQL
- ์ฟ ๋ฒ๋คํฐ์ค
- ๋์์ธํจํด
- java์ฑํ
- ์ฝ๋ฉํ ์คํธ
- oauth
- db์ ๋ต
- GoogleLogin
- ํฌ๋ก์ค์ฌ์ดํธ ์คํฌ๋ฆฝํธ
- ์ฝํ
- ์๊ณ ๋ฆฌ์ฆ
- node.js mysql ์ฐ๋
- spring
- Java
- java17
- React
- db์ํคํ ์ณ
- spring scheduler
- injection๊ณต๊ฒฉ
- docker
- Node.js
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- SpringBoot
- WebScoket
- WebChat
- CICD
- ์๋ฐ
- ์ค๋ธ์
- Today
- Total
๋ชฉ๋กJava (13)
<Hello Hosung๐/>
์ด์ ๊ธ์์๋ Spring Boot Filter ์ค๊ณ๋ฅผ ์์๋ณด์๋ค.Filter๋ Servlet ๋ ๋ฒจ์์ ๋์ํ๋ฉฐ ๋ชจ๋ ์์ฒญ์ ๊ฐ์ฅ ๋จผ์ ๊ฐ๋ก์ฑ๋ ๊ตฌ์กฐ์๋ค.์ด๋ฒ ๊ธ์์๋ Spring MVC ๋ ๋ฒจ์์ ๋์ํ๋ Interceptor๋ฅผ ์ค๊ณํด๋ณด์.1. Spring Boot ์์ฒญ ์ฒ๋ฆฌ ํ๋ฆSpring Boot์ ์์ฒญ ํ๋ฆ์ ๋ค์ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.Client ↓Filter ↓Spring Security Filter ↓DispatcherServlet ↓Interceptor ↓Controller ↓Service ↓Mapper (MyBatis) ↓Database ํต์ฌ ํฌ์ธํธFilter ์ดํ์ ์คํ๋๋คController ํธ์ถ ์ ํ๋ฅผ ์ ์ดํ ์ ์๋คSpring MVC ๋ ๋ฒจ์์ ๋์ํ๋ค๊ทธ๋์ ๋ณดํต ์ธ์ฆ / ๊ถํ / API ..
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๋ฅผ ์์ฑํ๋ค.์..
Spring Boot ์์ฒญ ํ๋ฆ ์ดํด (Request Lifecycle) Spring Boot๋ก API ์๋ฒ๋ฅผ ๊ฐ๋ฐํ ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ ์ค ํ๋๋ ์์ฒญ(Request)์ด ์๋ฒ ๋ด๋ถ์์ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋๋์ง ์ดํดํ๋ ๊ฒ์ด๋ค.๋ง์ ๊ฐ๋ฐ์๋ค์ด Controller, Service, Repository๋ง ์ฌ์ฉํ์ง๋ง ์ค์ ์์ฒญ์ ๊ทธ๋ณด๋ค ํจ์ฌ ๋ง์ ๊ณผ์ ์ ๊ฑฐ์ณ ์ฒ๋ฆฌ๋๋ค.์ด๋ฒ ๊ธ์์๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ด ์๋ฒ์ ๋์ฐฉํด ์๋ต์ด ๋ฐํ๋๊ธฐ๊น์ง์ ์ ์ฒด ํ๋ฆ์ ์ดํด๋ณธ๋ค.1. ์ ์ฒด ์์ฒญ ์ฒ๋ฆฌ ํ๋ฆSpring Boot์์ HTTP ์์ฒญ์ ์๋์ ๊ฐ์ ์์๋ก ์ฒ๋ฆฌ๋๋ค.Client Request ↓Filter ↓DispatcherServlet ↓Interceptor ↓Argument Resolver ..
Spring Security๋ Spring ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ์ฆ(authentication) ๋ฐ ๊ถํ(authorization) ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ฐ๋ ฅํ ํ๋ ์์ํฌ์ ๋๋ค. ์ด ๋ธ๋ก๊ทธ์์๋ Spring Security๋ฅผ ์ค์ ํ๊ณ , ๊ธฐ๋ณธ์ ์ธ ์ธ์ฆ ๋ฐ ๊ถํ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.1. Spring Security ์๊ฐSpring Security๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค์ํ ๋ณด์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ๋ ์์ํฌ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค:์ธ์ฆ(Authentication): ์ฌ์ฉ์๊ฐ ๋๊ตฌ์ธ์ง ํ์ธํ๋ ๊ณผ์ .๊ถํ(Authorization): ์ฌ์ฉ์๊ฐ ํน์ ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ํ์ธํ๋ ๊ณผ์ .2. Spring Security ์ค์ ํ๊ธฐ2.1. ์์กด์ฑ ์ถ๊ฐSpring Security๋ฅผ ํ๋ก์ ํธ..
Spring AOP๋ ๋ฌด์์ธ๊ฐ์? Spring AOP(Aspect-Oriented Programming)๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ๊ณ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋์ ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ ๋๋ค. AOP๋ '๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ'์ผ๋ก, ํ๋ก๊ทธ๋จ์ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง ์ธ์ ๊ณตํต์ ์ธ ๊ธฐ๋ฅ(์: ๋ก๊น , ํธ๋์ญ์ ๊ด๋ฆฌ ๋ฑ)์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋ ์ค๋ณต์ ์ค์ด๊ณ , ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก AOP๋ ํต์ฌ ๊ธฐ๋ฅ๊ณผ๋ ๋ณ๋๋ก "๊ด์ (Aspect)"์ด๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํ์ฌ ๊ณตํต๋ ๊ด์ฌ์ฌ๋ฅผ ๋ชจ๋ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๋ ๊ธฐ๋ฅ์ด๋ ํธ๋์ญ์ ๊ด๋ฆฌ๋ฅผ AOP๋ฅผ ํตํด ๋ณ๋๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. AOP์ ํต์ฌ ๊ฐ๋ Aspect (๊ด์ ): ํต์ฌ ๋ก์ง์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๋ชจ๋์ ๋๋ค. ์๋ฅผ..
๋์์ธ ํจํด์ด๋ ?๋์์ธ ํจํด์ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ฃจ์ ์ ๋๋ค. ๋์์ธ ํจํด์ ํน์ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ฏธ ๊ฒ์ฆ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ฉฐ, ์ด๋ฅผ ํตํด ์ฝ๋์ ํจ์จ์ฑ๊ณผ ์ ์ง ๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ๋์์ธ ํจํด์ ๋ถ๋ฅ๋์์ธ ํจํด์ ์ผ๋ฐ์ ์ผ๋ก ์ธ ๊ฐ์ง ์ฃผ์ ๋ฒ์ฃผ๋ก ๋๋ ์ง๋๋ค: ์์ฑ ํจํด (Creational Patterns): ๊ฐ์ฒด ์์ฑ๊ณผ ๊ด๋ จ๋ ํจํด ๊ตฌ์กฐ์ ํจํด (Structural Patterns): ํด๋์ค์ ๊ฐ์ฒด์ ๊ด๊ณ๋ฅผ ์กฐ์งํ๋ ํจํด ํ๋ ํจํด (Behavioral Patterns): ๊ฐ์ฒด ๊ฐ์ ์ํธ์์ฉ๊ณผ ์ฑ ์์ ์ ์ํ๋ ํจํด ์์ฃผ ์ฌ์ฉ๋๋ ์๋ฐ ๋์์ธ ํจํด(1) ์ฑ๊ธํค ํจํด (Singleton Pattern) ๋ชฉ์ : ํด๋์ค์ ์ธ์คํด์ค๊ฐ ํ๋๋ง ์กด..
์ฑ๊ธํค(Singleton) ํจํด์ ๊ฐ์ฒด์ ์ธ์คํด์ค๊ฐ ์ค์ง ํ๋๋ง ์กด์ฌํ๋๋ก ๋ณด์ฅํ๋ ๋์์ธ ํจํด์ ๋๋ค. ์ฃผ๋ก ํ๋์ ์ธ์คํด์ค๋ง ํ์ํ๊ฑฐ๋, ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๊ณต์ ํด์ผ ํ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ด๋ ๋ก๊ทธ ์ฒ๋ฆฌ๊ธฐ์ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค. 1. ์ฑ๊ธํค ํจํด์ ํต์ฌ ํน์ง์ค์ง ํ๋์ ์ธ์คํด์ค๋ง ์์ฑ๋๋ฉฐ, ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฅผ ๊ณต์ ํฉ๋๋ค.๊ธ๋ก๋ฒ ์ ๊ทผ์ ์ ๊ณตํ์ฌ ํ๋ก๊ทธ๋จ ์ด๋์๋ ํด๋น ์ธ์คํด์ค์ ์ ๊ทผํ ์ ์์ต๋๋ค.์ธ์คํด์ค๋ฅผ ์ ์ญ์ผ๋ก ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. 2. ์ฑ๊ธํค ํจํด ๊ตฌํ ์์ (Java)๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ฑ๊ธํค ํจํด์ Java๋ก ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค. ์์ ์ฝ๋: ๊ธฐ๋ณธ ์ฑ๊ธํค ๊ตฌํpublic class Singleton { // ์ ์ ๋ณ์๋ก ์ฑ..
Java์์ **์ง๋ ฌํ(Serialization)**๋ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ์ฌ ํ์ผ์ ์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์กํ ์ ์๋๋ก ๋ง๋๋ ๊ณผ์ ์ ๋๋ค. ๋ฐ๋๋ก, ๋ฐ์ดํธ ์คํธ๋ฆผ์ ๋ค์ ๊ฐ์ฒด๋ก ๋ณํํ๋ ๊ณผ์ ์ **์ญ์ง๋ ฌํ(Deserialization)**๋ผ๊ณ ํฉ๋๋ค. ์ง๋ ฌํ๋ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ํํ๊ฑฐ๋ ์๊ฒฉ ํต์ ์์ ๊ฐ์ฒด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ง๋ ฌํ๊ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋ธ๋ก๊ทธ์์๋ Java์์ ์ง๋ ฌํ๊ฐ ๋ฌด์์ธ์ง, ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์์ ์ฝ๋๋ก ์ฝ๊ฒ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค. 1. ์ง๋ ฌํ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ง๋ ฌํ๋ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ์ฌ ์ ์ฅํ๊ฑฐ๋ ์ ์กํ ์ ์๋๋ก ํด์ฃผ๋ ๊ณผ์ ์ ๋๋ค. ์ง๋ ฌํ๋ ๊ฐ..
์๋ฐ ์ธํฐํ์ด์ค๋ ํด๋์ค๊ฐ ๋ฐ๋์ ๊ตฌํํด์ผ ํ๋ ๋ฉ์๋๋ฅผ ์ ์ธํ๋ ์ถ์์ ์ธ ํ์ ์ ๋๋ค. ์ธํฐํ์ด์ค๋ ๋ฉ์๋์ ์ ์ธ๋ง ํฌํจํ๊ณ , ๋ฉ์๋ ๋ณธ์ฒด(๊ตฌํ)๋ ํฌํจํ์ง ์์ต๋๋ค. ํด๋์ค๋ฅผ ๋ง๋ค ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํ(implement)ํ๋ฉด, ์ธํฐํ์ด์ค์ ์ ์๋ ๋ชจ๋ ๋ฉ์๋๋ฅผ ๋ฐ๋์ ๊ตฌํํด์ผ ํฉ๋๋ค. ์ธํฐํ์ด์ค์ ์ฃผ๋ ๋ชฉ์ ์ ๋คํ์ฑ์ ์ ๊ณตํ๊ณ , ๋์จํ ๊ฒฐํฉ์ ์ ๋ํ๋ ๊ฒ์ ๋๋ค. ์ฆ, ์๋ก ๋ค๋ฅธ ํด๋์ค๋ค์ด ๋์ผํ ๋ฉ์๋๋ฅผ ํตํด ๋์ํ ์ ์๋๋ก ํ์ฌ ์ฝ๋์ ์ ์ฐ์ฑ๊ณผ ํ์ฅ์ฑ์ ๋์ด๋ ์ญํ ์ ํฉ๋๋ค. ์ธํฐํ์ด์ค์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์ธํฐํ์ด์ค๋ interface ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Animal์ด๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๊ณ , sound()๋ผ๋ ๋ฉ์๋๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค.interface Animal { void..
Java์์ ํ์ผ ์ ์ถ๋ ฅ์ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ ํ์ผ์ ์ ์ฅํ๊ฑฐ๋ ์ฝ์ด๋ค์ด๊ธฐ ์ํด ํ์์ ์ธ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ์์์ฑ์ ๊ตฌํํ ์ ์์ด ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ ํ์ผ ์ ์ถ๋ ฅ์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ์์ฃผ ์ฐ์ด๋ ํด๋์ค๋ค, ๊ทธ๋ฆฌ๊ณ ์ฝ๋ ์์ ๋ฅผ ํตํด ํ์ผ ์ ์ถ๋ ฅ์ ๊ฐ๋จํ ์์๋ณด๊ฒ ์ต๋๋ค. 1. ํ์ผ ์ ์ถ๋ ฅ ๊ธฐ๋ณธ ๊ฐ๋ Java์ ์ ์ถ๋ ฅ์ ์คํธ๋ฆผ(Stream) ๊ฐ๋ ์ ํตํด ์ด๋ฃจ์ด์ง๋๋ค. ์คํธ๋ฆผ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ์ ์กํ๋ ํ๋ฆ์ผ๋ก, Java๋ ์ด๋ฅผ ํตํด ํ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ฐ๋ ์์ ์ ์ํํฉ๋๋ค. ์ ์ถ๋ ฅ์๋ ํฌ๊ฒ ๋ ๊ฐ์ง ์ ํ์ด ์์ต๋๋ค๋ฐ์ดํธ ์คํธ๋ฆผ: InputStream, OutputStream์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํธ(byte) ๋จ์๋ก ์ฝ๊ณ ์๋๋ค. ์ฃผ๋ก ์ด๋ฏธ์ง, ..
Spring Boot๋ ์์กด์ฑ ์ฃผ์ (Dependency Injection, DI)์ ํตํด ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ด๋ฆฌํ๊ณ , ๊ฐ์ฒด์ ์์ฑ๊ณผ ๊ด๊ณ ์ค์ ์ Spring ์ปจํ ์ด๋๊ฐ ๋ด๋นํ๊ฒ ๋ง๋ค์ด ์ฃผ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ , ๊ฐ์ฒด๋ค์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ํ ์คํธ ์ฉ์ด์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ์ด๋ฒ ๋ธ๋ก๊ทธ์์๋ Spring Boot์์ ์์กด์ฑ ์ฃผ์ ์ ๊ฐ๋ ๊ณผ ์ค์ ์์๋ฅผ ํตํด ์ด๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. 1. ์์กด์ฑ ์ฃผ์ (Dependency Injection)๋? **์์กด์ฑ ์ฃผ์ (DI)**์ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ์ง ์๊ณ , ์ธ๋ถ์์ ์์กด ๊ฐ์ฒด๋ฅผ ์ฃผ์ ๋ฐ๋๋ก ํ๋ ์ค๊ณ ํจํด์ ๋๋ค. ๊ฐ์ฒด๊ฐ ์์ ์ ์์กด์ฑ์ ์ง์ ๊ด๋ฆฌํ๋ ๋์ , Spring๊ณผ ๊ฐ์ IoC(Inversion ..
์์ผ(Socket)์ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๊ฒ ํด์ฃผ๋ ์๋ฐฉํฅ ํต์ ์ฑ๋์ ๋๋ค. ์๋ฐ์์๋ java.net ํจํค์ง๋ฅผ ํตํด ์์ผ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํฉ๋๋ค. ์ด ๊ธ์์๋ ์๋ฐ ์์ผ ํต์ ์ ์ด์ฉํ์ฌ ๊ฐ๋จํ ์ฑํ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.1. ์์ผ ํต์ ์ ๊ธฐ๋ณธ ์ดํด์์ผ ํต์ ์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋ ์ ์์ต๋๋ค:์๋ฒ(Server): ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ๊ด๋ฆฌํ๋ ์ญํ ํด๋ผ์ด์ธํธ(Client): ์๋ฒ์ ์ ์ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ญํ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋๊ธฐํ๋ฉฐ ์ฐ๊ฒฐ์ ์๋ฝํ๊ณ , ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์ฐ๊ฒฐ ์์ฒญ์ ๋ณด๋ ๋๋ค. ๋ฐ์ดํฐ๋ InputStream๊ณผ OutputStream์ ํตํด ์ฃผ๊ณ ๋ฐ์ต๋๋ค.2. ์ฑํ ์๋ฒ ๊ตฌํ์ฑํ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ๋ฐ๊ณ , ๋ฉ์์ง๋ฅผ ํด๋ผ์ด..
Spring Boot ์์ ์ค์ผ์ค ๋ง๋ค๊ธฐ ๋ค์ ์์ ๋ ์ ๋นํธ open api ์ Spring Boot์ ์ค์ผ์ฅด๋ฌ ๊ธฐ๋ฅ์ ํตํ์ฌ ๋งค ์๊ฐ ๋ง๋ค ์ ๋นํธ์ ๋ค์ํ ์ ๋ณด๋ฅผ Mysql ์ ์ ์ฌํ๋ ๋ฐฉ๋ฒ์ ์์ ํ๋ค.package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import co..