Welcome !
N.K Github
2
8์›”

[Spring boot] Spring boot Security๋ฅผ ์ด์šฉํ•œ OAuth2 ์ธ์ฆ ๊ตฌํ˜„ 3 - ๊ตญ๋‚ด ํฌํ„ธ ์ธ์ฆ

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ ๊ธฐ์กด์˜ User Entity ํ˜น์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ User Entity์™€ ์—ฐ๋™ํ•˜์—ฌ OAuth2 ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ดค์Šต๋‹ˆ๋‹ค. Spring boot Security์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Google, Facebook ๋“ฑ์˜ ํ•ด์™ธ ์†Œ์…œ ๋กœ๊ทธ์ธ API๋ฅผ ...

1
8์›”

[Spring boot] Spring boot Security๋ฅผ ์ด์šฉํ•œ OAuth2 ์ธ์ฆ ๊ตฌํ˜„ 2 - User Entity ์—ฐ๋™

์›น ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ–์ถฐ์ ธ์•ผ ํ•  ๊ฒƒ์€ ๋ฐ”๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•œ ์‚ฌ์šฉ์ž์ธ์ง€๋ฅผ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ๊ณผ ๋”๋ถˆ์–ด, ๋‹จ๊ณจ์ธ์ง€, ์•„๋‹Œ์ง€ ๋“ฑ์ด๋‚˜ ์‚ฌ์ดํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ด€๋ฆฌ์ž ๋“ฑ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐ ์žˆ์–ด, ์‚ฌ์šฉ์ž ์ธ์ฆ์€ ํ•„์ˆ˜์ ์ธ ์š”์†Œ๋ผ๊ณ  ํ•  ์ˆ˜ ...

1
8์›”

[Spring] Argument Resolver๋ฅผ ์ด์šฉํ•œ ์œ ์—ฐ์„ฑ ์žˆ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์ฒ˜๋ฆฌ

์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋‹ค๋ณด๋ฉด ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ๋งˆ๋‹ค Controller ๋ถ€๋ถ„์—์„œ ์ด๋ฅผ ์ „์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ฐ Controller์— ์ „์ฒ˜๋ฆฌ ํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ํ•จ์ˆ˜ํ™” ํ•˜๊ฑฐ๋‚˜ Utils ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ , ์ด๋ฅผ ์˜์กด์„ฑ ์ฃผ์ž…ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ...

1
8์›”

[Spring boot] Spring boot Security๋ฅผ ์ด์šฉํ•œ OAuth2 ์ธ์ฆ ๊ตฌํ˜„ 1 - Google ๊ณ„์ • ์ธ์ฆ

์ง€๋‚œ ํฌ์ŠคํŠธ์— ์ด์–ด์„œ, ์˜ค๋Š˜์€ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ Spring boot Security ๋””ํŽœ๋˜์‹œ๋ฅผ ์ด์šฉํ•ด OAuth2 ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ OAuth2 ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ธ์ฆ ํ† ํฐ๊ณผ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ดค...

7
8์›”

[Spring boot] Spring boot Security๋กœ ์‹œ์ž‘ํ•ด๋ณด๋Š” ์ธ์ฆ

Spring Framework๋ฅผ ์ด์šฉํ•˜์—ฌ ์›น ์„œ๋น„์Šค๋‚˜ REST API ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋˜๋ฉด ๊ฐ€์žฅ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์€ ๋ฐ”๋กœ ์ธ์ฆ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์ธ์ฆ์ด๋ž€, ๋‚ด๊ฐ€ ๊ฐœ๋ฐœํ•œ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‹๋ณ„ํ•˜๊ณ ์ž ํ•˜๋Š” ์‚ฌ์šฉ์ž ํ˜น์€ ๊ด€๋ฆฌ์ž๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ...

[Spring] JPA์˜ ํ”Œ๋Ÿฌ์‹œ(flush)

JPA๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์˜์†์‹œ์ผœ ์ปค๋ฐ‹ํ•˜๋Š” ๊ณผ์ •๊นŒ์ง€๋ฅผ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, JPA์˜ commit()์„ ํ˜ธ์ถœํ•  ๋•Œ ํ•ญ์ƒ ๋ฐœ์ƒํ•˜๋Š” flush()๋Š” ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š” ๋…€์„์ผ๊นŒ์š”? flush() ์ปค๋ฐ‹ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด JPA ์˜์†์„ฑ ...

2
6์›”

[Spring] JPA ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ ๊ตฌ์กฐ๋กœ ๋ณด๋Š” ์ด์ 

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ JPA์˜ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์™€ ์ƒ๋ช… ์ฃผ๊ธฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์˜ ์ƒ๋ช… ์ฃผ๊ธฐ์˜ ๊ด€๊ณ„๋ฅผ ํ†ตํ•ด์„œ Java๋กœ ๊ตฌํ˜„๋œ ๊ฐ์ฒด๊ฐ€ ์–ด๋–ป๊ฒŒ DB๋กœ ์ ์žฌ๋˜๊ณ  ์‚ญ์ œ๋˜๋Š”์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ผ๊นŒ์š”? ์ฒ˜์Œ์— ์ €...

2
6์›”

[Spring] JPA์˜ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์™€ ์ƒ๋ช…์ฃผ๊ธฐ

Spring Framework๋ฅผ ์ด์šฉํ•˜์—ฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” DB ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ด์šฉํ•˜์—ฌ DB Connection์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปค๋„ฅ์…˜์ด ์—ฐ๊ฒฐํ•˜๊ณ  ๋Š์–ด์ง€๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ...

4
6์›”

[Spring boot] ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Docker ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค๊ธฐ Old & New

Spring boot๋กœ ๊ฐœ๋ฐœํ•œ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ธ์Šคํ„ด์Šค์— ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” WAS๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ Docker ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด์„œ Docker ์ด๋ฏธ์ง€๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ...

2
5์›”

[Spring boot] DAO์™€ DTO

์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ DB์™€ ๊ฐ™์ด ์ด์šฉํ•˜๋ฉด์„œ, DAO, DTO๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ DAO, DTO๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ ํ•œ ๋ฒˆ ์ œ๋Œ€๋กœ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. DAO DAO๋Š” Data Access Object์˜ ์•ฝ์ž๋กœ ์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด DB์˜ data์—...

2
5์›”

[Spring Data] Hibernate, JPA ๊ทธ๋ฆฌ๊ณ  Spring Data JPA

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ ๋‹ค๋ค„ ๋ณธ JDBC์™€ Spring JDBC๋Š” ์ž๋ฐ”์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์ดˆ ์ธํ„ฐํŽ˜์ด์Šค์˜€๊ณ , ์ด๋“ค ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ์ž‘์—…๋“ค, ์—ฐ๊ฒฐ ์„ธ์…˜, ๊ทธ๋ฆฌ๊ณ  ๊ด€์‹ฌ์ ์˜ ๋ถ„๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐœ์ „๋œ ๋ชจ์Šต์„ ๋ณด์˜€๋Š”๋ฐ์š”. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ทธ์— ์ด์–ด์„œ H...

2
5์›”

[Spring boot] JDBC์™€ Spring JDBC ๊ทธ๋ฆฌ๊ณ  MyBatis

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ MVC ํŒจํ„ด๊ณผ Spring Data Rest๋ฅผ ์ด์šฉํ•ด ๊ฐ„๋‹จํ•œ REST API ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ์—ˆ๋Š”๋ฐ์š”. ๊ทธ๋Ÿฐ๋ฐ, ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ์—์„œ DB์™€ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ–ˆ๋˜ ๋””ํŽœ๋˜์‹œ๊ฐ€ ์žˆ์—ˆ์ฃ . ๋ฐ”๋กœ Spring Data JPA์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ๊ธฐ์กด์˜ S...

2
5์›”

[Spring boot] Spring Data Rest๋ฅผ ์ด์šฉํ•œ REST API ๊ฐœ๋ฐœ 2

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ Spring Data Rest๋ฅผ ์ด์šฉํ•ด Domain๊ณผ Repository Interface๋งŒ์„ ๊ตฌํ˜„ํ•˜์—ฌ HATEOAS์— ์ค€์ˆ˜ํ•œ REST API ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ REST API๋ฅผ ์„ค๊ณ„ํ•˜๋‹ค๋ณด๋ฉด, HATEOAS์˜ ๊ตฌ์กฐ๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ...

2
5์›”

[Spring boot] Spring Data Rest๋ฅผ ์ด์šฉํ•œ REST API ๊ฐœ๋ฐœ 1

MVC ํŒจํ„ด์— ์ด์–ด์„œ, ์ด๋ฒˆ์—๋Š” Spring Data Rest๋ฅผ ์ด์šฉํ•˜์—ฌ REST API ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. MVC ํŒจํ„ด์—์„œ๋Š” Domain, Controller, Repository ์ด๋ ‡๊ฒŒ 3๊ฐ€์ง€๋ฅผ ์ด์šฉํ•˜์˜€๊ณ , ์ถ”๊ฐ€๋กœ Service ํด๋ž˜์Šค๋ฅผ ...

1
5์›”

[Spring boot] MVC ํŒจํ„ด์„ ์ด์šฉํ•œ REST API ๊ฐœ๋ฐœ

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ REST API๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์–ด๋–ป๊ฒŒ ์„ค๊ณ„๋ฅผ ํ•ด์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ดค์Šต๋‹ˆ๋‹ค. REST API๋Š” HTTP Method๋ฅผ ์ด์šฉํ•˜์—ฌ ํ–‰์œ„๋ฅผ ์ •ํ•˜๊ณ , URI๋ฅผ ์ด์šฉํ•ด์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ •ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์„œ๋ฒ„์˜€๋Š”๋ฐ์š”. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” MVC ํŒจํ„ด + Sprin...

1
5์›”

[Spring boot] REST API์˜ ๊ธฐ์ดˆ์™€ ์„ค๊ณ„

Spring boot๊ฐ€ ๊ธฐ์กด์˜ Spring์— ๋น„ํ•ด ๋‹ค์–‘ํ•œ ์„ค์ •๋“ค์„ ์ž๋™ํ™” ์‹œ์ผœ ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ค์ •ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์„ ์ค„์ด๊ณ , ์ž„๋ฒ ๋””๋“œ ํ†ฐ์บฃ์„ ํƒ‘์žฌํ•˜์—ฌ ๋” ์‰ฌ์šด ๊ฐœ๋ฐœ๋“ค์ด ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Spring boot๋กœ ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•ด๋ณด๋Š” ์ฒซ ๋‹จ์ถ”์ธ REST ...

2
4์›”

[Spring boot] Spring boot test starter๋ฅผ ์ด์šฉํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ ์ž ๊น, ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ดค์—ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด, ํ™•์‹คํžˆ Postman์ด๋‚˜ Curl๊ณผ ๊ฐ™์€ ํ…Œ์ŠคํŠธ ๋„๊ตฌ์—†์ด๋„ ์ž๋™ํ™” ๋œ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•ด์„œ ์‰ฝ๊ฒŒ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ์—ˆ์ฃ . ์‹ค์ œ๋กœ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๊ตฌํ˜„์€ ํ˜„...

2
4์›”

[Spring boot] ๋‚˜๋งŒ์˜ ํ™˜๊ฒฝ ์„ค์ • ๋งŒ๋“ค๊ธฐ

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ ์ž๋™ ํ™˜๊ฒฝ ์„ค์ •๊ณผ ๊ฐœ๋ฐœ, ํ”„๋กœ๋•์…˜, ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ๋Š” ๊ทธ๊ฑฐ์— ์ด์–ด์„œ, ๋‚˜๋งŒ์˜ ํ™˜๊ฒฝ ์„ค์ • ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. @Value ์šฐ๋ฆฌ๋Š” ํ™˜๊ฒฝ์„ค์ •์—์„œ Property์˜ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ •ํ•œ ๊ฐ’...