| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 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 | 31 |
- dockerhub
- docker
- Node.js
- spring scheduler
- ์ฝํ
- db์ ๋ต
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- MySQL
- node.js mysql ์ฐ๋
- ์ฟ ๋ฒ๋คํฐ์ค
- React
- oauth
- ๋์์ธํจํด
- ์ค๋ธ์
- @scheduler
- Java
- ์๊ณ ๋ฆฌ์ฆ
- ํฌ๋ก์ค์ฌ์ดํธ ์คํฌ๋ฆฝํธ
- ์ฝ๋ฉํ ์คํธ
- GoogleLogin
- spring
- SpringBoot
- db์ํคํ ์ณ
- ๋ ผ๋ธ๋กํน
- java์ฑํ
- Jenkins
- ์๋ฐ
- CICD
- injection๊ณต๊ฒฉ
- Personal Access Token
- Today
- Total
๋ชฉ๋กJava (9)
<Hello Hosung๐/>
๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ๊ตฌํํ๊ธฐ ์ํด, 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)๋ฅผ ๋ณต์ฌ..
๋์์ธ ํจํด์ด๋ ?๋์์ธ ํจํด์ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ฃจ์ ์ ๋๋ค. ๋์์ธ ํจํด์ ํน์ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ฏธ ๊ฒ์ฆ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ฉฐ, ์ด๋ฅผ ํตํด ์ฝ๋์ ํจ์จ์ฑ๊ณผ ์ ์ง ๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ๋์์ธ ํจํด์ ๋ถ๋ฅ๋์์ธ ํจํด์ ์ผ๋ฐ์ ์ผ๋ก ์ธ ๊ฐ์ง ์ฃผ์ ๋ฒ์ฃผ๋ก ๋๋ ์ง๋๋ค: ์์ฑ ํจํด (Creational Patterns): ๊ฐ์ฒด ์์ฑ๊ณผ ๊ด๋ จ๋ ํจํด ๊ตฌ์กฐ์ ํจํด (Structural Patterns): ํด๋์ค์ ๊ฐ์ฒด์ ๊ด๊ณ๋ฅผ ์กฐ์งํ๋ ํจํด ํ๋ ํจํด (Behavioral Patterns): ๊ฐ์ฒด ๊ฐ์ ์ํธ์์ฉ๊ณผ ์ฑ ์์ ์ ์ํ๋ ํจํด ์์ฃผ ์ฌ์ฉ๋๋ ์๋ฐ ๋์์ธ ํจํด(1) ์ฑ๊ธํค ํจํด (Singleton Pattern) ๋ชฉ์ : ํด๋์ค์ ์ธ์คํด์ค๊ฐ ํ๋๋ง ์กด..
์ฑ๊ธํค(Singleton) ํจํด์ ๊ฐ์ฒด์ ์ธ์คํด์ค๊ฐ ์ค์ง ํ๋๋ง ์กด์ฌํ๋๋ก ๋ณด์ฅํ๋ ๋์์ธ ํจํด์ ๋๋ค. ์ฃผ๋ก ํ๋์ ์ธ์คํด์ค๋ง ํ์ํ๊ฑฐ๋, ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๊ณต์ ํด์ผ ํ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ด๋ ๋ก๊ทธ ์ฒ๋ฆฌ๊ธฐ์ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค. 1. ์ฑ๊ธํค ํจํด์ ํต์ฌ ํน์ง์ค์ง ํ๋์ ์ธ์คํด์ค๋ง ์์ฑ๋๋ฉฐ, ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฅผ ๊ณต์ ํฉ๋๋ค.๊ธ๋ก๋ฒ ์ ๊ทผ์ ์ ๊ณตํ์ฌ ํ๋ก๊ทธ๋จ ์ด๋์๋ ํด๋น ์ธ์คํด์ค์ ์ ๊ทผํ ์ ์์ต๋๋ค.์ธ์คํด์ค๋ฅผ ์ ์ญ์ผ๋ก ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. 2. ์ฑ๊ธํค ํจํด ๊ตฌํ ์์ (Java)๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ฑ๊ธํค ํจํด์ Java๋ก ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค. ์์ ์ฝ๋: ๊ธฐ๋ณธ ์ฑ๊ธํค ๊ตฌํpublic class Singleton { // ์ ์ ๋ณ์๋ก ์ฑ..
Java์์ **์ง๋ ฌํ(Serialization)**๋ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ์ฌ ํ์ผ์ ์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์กํ ์ ์๋๋ก ๋ง๋๋ ๊ณผ์ ์ ๋๋ค. ๋ฐ๋๋ก, ๋ฐ์ดํธ ์คํธ๋ฆผ์ ๋ค์ ๊ฐ์ฒด๋ก ๋ณํํ๋ ๊ณผ์ ์ **์ญ์ง๋ ฌํ(Deserialization)**๋ผ๊ณ ํฉ๋๋ค. ์ง๋ ฌํ๋ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ํํ๊ฑฐ๋ ์๊ฒฉ ํต์ ์์ ๊ฐ์ฒด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ง๋ ฌํ๊ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋ธ๋ก๊ทธ์์๋ Java์์ ์ง๋ ฌํ๊ฐ ๋ฌด์์ธ์ง, ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์์ ์ฝ๋๋ก ์ฝ๊ฒ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค. 1. ์ง๋ ฌํ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ง๋ ฌํ๋ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ์ฌ ์ ์ฅํ๊ฑฐ๋ ์ ์กํ ์ ์๋๋ก ํด์ฃผ๋ ๊ณผ์ ์ ๋๋ค. ์ง๋ ฌํ๋ ๊ฐ..
์๋ฐ๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ์ธ์ด์ ๋๋ค. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํต์ฌ ๊ฐ๋ ์ค ํ๋๋ "์์"์ ๋๋ค. ์์์ ํ์ฉํ๋ฉด ๊ธฐ์กด์ ํด๋์ค๋ฅผ ๋ฐํ์ผ๋ก ์๋ก์ด ํด๋์ค๋ฅผ ๋ง๋ค ์ ์๋๋ฐ, ์ด๋ฅผ ํตํด ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ์ด๋ฒ ๋ธ๋ก๊ทธ์์๋ ์๋ฐ ์์์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ์ค์ ์์ ๋ฅผ ํตํด ์ด๋ฅผ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ์ค๋ช ๋๋ฆด๊ฒ์๐ 1. ์์์ด๋ ๋ฌด์์ธ๊ฐ? **์์(Inheritance)**์ ํ๋์ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ๋ฌผ๋ ค๋ฐ๋ ๊ธฐ๋ฅ์ ๋๋ค. ๋ถ๋ชจ ํด๋์ค(์์ ํด๋์ค)์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์์ ํด๋์ค(ํ์ ํด๋์ค)์์ ์ฌ์ฌ์ฉํ ์ ์๊ฒ ๋๋ฏ๋ก, ์ฝ๋์ ์ค๋ณต์ ์ค์ด๊ณ ํจ์จ์ ์ธ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ ์์ต๋๋ค. ์์์ ๊ธฐ๋ณธ ๊ตฌ๋ฌธclass ๋ถ๋ชจํด๋์ค { // ๋ถ๋ชจ ํด๋์ค์ ์์ฑ..
์๋ฐ ์ธํฐํ์ด์ค๋ ํด๋์ค๊ฐ ๋ฐ๋์ ๊ตฌํํด์ผ ํ๋ ๋ฉ์๋๋ฅผ ์ ์ธํ๋ ์ถ์์ ์ธ ํ์ ์ ๋๋ค. ์ธํฐํ์ด์ค๋ ๋ฉ์๋์ ์ ์ธ๋ง ํฌํจํ๊ณ , ๋ฉ์๋ ๋ณธ์ฒด(๊ตฌํ)๋ ํฌํจํ์ง ์์ต๋๋ค. ํด๋์ค๋ฅผ ๋ง๋ค ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํ(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. ์ฑํ ์๋ฒ ๊ตฌํ์ฑํ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ๋ฐ๊ณ , ๋ฉ์์ง๋ฅผ ํด๋ผ์ด..