๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring Boot11

Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ k8s ํ™˜๊ฒฝ์—์„œ WarmUp ์ ์šฉํ•˜๊ธฐ ์ด ๊ธ€์„ ์ž‘์„ฑํ•˜๋Š” ์ด์œ  ํ˜„์žฌ ํšŒ์‚ฌ์—์„œ๋Š” EKS ๊ธฐ๋ฐ˜ k8s ํ™˜๊ฒฝ์—์„œ spring boot ๋ฅผ ํฌํ•จ ๊ฐ์ข… ํ”„๋ ˆ์ž„์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์šด์˜ ์ค‘์ด๋‹ค. ๊ธฐ์กด ๋ชจ๋…ธ๋ฆฌ์Šค Django Rest Framework ์—์„œ ์ ์ง„์ ์œผ๋กœ ๋„๋ฉ”์ธ ๋ถ„๋ฆฌ๋ฅผ Spring Boot ๋ฅผ ์ด์šฉํ•œ Micro Service Application ์œผ๋กœ ์ง„ํ–‰ ์ค‘์ธ๋ฐ, ๋‚ด๊ฐ€ ๋งก์€ ๊ฒฐ์ œ ๋„๋ฉ”์ธ ๊ด€๋ จ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. (Kotlin ๊ธฐ๋ฐ˜ Spring Boot App) ๋ฌธ์ œ๋Š”, ๊ฒฐ์ œ๊ฐ€ ์ฃผ๋ฌธ ๋ฐ ์œ ๊ด€ DB ์™€ ๋„ˆ๋ฌด ๊ฐ•ํ•˜๊ฒŒ ์–ฝํ˜€ ์žˆ์–ด์„œ ๋ฐ”๋ผ๋ณด์•„์•ผ ํ•˜๋Š” ํ…Œ์ด๋ธ”์ด ๋งŽ๋‹ค๋Š” ์ ์ด๊ณ , ์ด๊ฒƒ์€ ๊ณง ๋ฐฐํฌ ์งํ›„ ์†๋„์— ์ปค๋‹ค๋ž€ ์˜ํ–ฅ์„ ๋ผ์ณค๋‹ค. JVM ์€ ์ปดํŒŒ์ผ ๋œ .class ํŒŒ์ผ์„ ํ•„์š” ์‹œ ํด๋ž˜์Šค ๋กœ๋”ฉ์„ ํ†ตํ•ด ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ J.. 2024. 3. 17.
WebFlux๋Š” ๋ฌด์—‡์ด๊ณ , ์™œ ๋‚˜์™”๊ณ , ์–ธ์ œ ์“ฐ์ด๋Š”๊ฐ€? ์–ด์ œ Cart API ์ฝ”๋“œ ๋ฆฌํŒฉํ„ฐ๋ง์„ ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ , ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด PR์„ ์˜ฌ๋ ธ๋‹ค.ํด๋ฆฐ ํ•œ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ๋ทฐ์–ด๋‹˜์ด ์ฃผ์‹  ์˜๊ฒฌ์„ ๋˜๋‡Œ๊ณ , ํด๋ฆฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ํ•˜๋ฃจ ์ข…์ผ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ๋…ธ๋ ค๋ณด๋ฉฐ ํด๋ž˜์Šค ๊ฐ„ ์ฑ…์ž„์„ ๋‚˜๋ˆ„์–ด ๋ณด์•˜๋‹ค. ๋นจ๋ฆฌ ์„ฑ์žฅํ•˜๊ณ  ์‹ถ๋‹ค!!๋ฆฌ๋ทฐ๋ฅผ ์•ž๋‘๊ณ , ์นด์นด์˜คํŽ˜์ด๋ฅผ ์ด์šฉํ•œ ๋„๋ฉ”์ธ ์ฝ”๋“œ๋“ค์„ ๋ฆฌํŒฉํ„ฐ๋ง ํ•˜๊ธฐ ์•ž์„œ, ๊ธฐ์กด์— ์™ธ๋ถ€ API์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋˜ ํ…œํ”Œ๋ฆฟ์ธ RestTemplate์˜ ๋Œ€์ฒด ์—ฌ๋ถ€์— ๋Œ€ํ•ด ๋– ์˜ฌ๋ž๋‹ค.RestTemplate์€ deprecated ๋˜์—ˆ์œผ๋ฏ€๋กœ, WebClient์˜ ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•ด๋ณด๋ผ๋Š” ์˜๊ฒฌ์„ ๋ฐ›์•˜๋‹ค.WebClient์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋‹ค๊ฐ€ ๋™๊ธฐ/๋น„๋™๊ธฐ, ๋ธ”๋กœํ‚น/๋…ผ๋ธ”๋กœํ‚น์ด๋ผ๋Š” ๊ฐœ๋…์˜ ์ •์˜์— ๋Œ€ํ•ด ๋‹ค์‹œ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ๋‚˜์•„๊ฐ€ WebFlux.. 2022. 8. 31.
๊ฐ์ฒด ๊ฐ„ ๋งคํ•‘์„ ์œ„ํ•œ MapStruct ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—์„œ Dto Entity๋ฅผ ๋งคํ•‘ํ•  ๋•Œ model mapper ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค. ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฆฌํ”Œ๋ ‰์…˜์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์„ฑ๋Šฅ ์ƒ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ๋งŽ์ด๋“ค ์ถ”์ฒœํ•˜๋Š” Map Struct๋ฅผ ์‚ฌ์šฉํ•ด๋ดค๋‹ค. ์ ์šฉํ•˜๋ฉด์„œ ์ž์ž˜ํ•œ ๋ฌธ์ œ๋“ค์ด ์žˆ์—ˆ๋Š”๋ฐ, ๋‚ด๊ฐ€ ๊ฒช์€ ๋ฌธ์ œ์ ๋“ค์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค. https://mapstruct.org/documentation/dev/reference/html/ MapStruct 1.5.2.Final Reference Guide If set to true, MapStruct in which MapStruct logs its major decisions. Note, at the moment of writing in Maven, al.. 2022. 8. 29.
Spring Security [2] - ์˜ˆ์™ธ ์ฒ˜๋ฆฌ AuthenticationEntryPoint & AccessDeniedHandler ์„œํ๋ฆฌํ‹ฐ๋ฅผ ๋„์ž…ํ•˜๋ฉฐ ์ธ์ฆ, ์ธ๊ฐ€์˜ ๊ณผ์ •์„ ๋งˆ์ณค๋‹ค. ์ด์ œ ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ์ž‘์—…์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ์— ๋Œ€ํ•ด์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ, ํ•œ ๊ฐ€์ง€ ์ƒ๊ฐํ•ด๋ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์Šคํ”„๋ง ์„œํ๋ฆฌํ‹ฐ๋Š” ํ•„ํ„ฐ์— ๊ธฐ๋ฐ˜ํ•œ ์ฒด์ด๋‹ ๊ตฌ์กฐ์ด๋ฏ€๋กœ, ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊นŒ์ง€ ์š”์ฒญ์ด ๋„๋‹ฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ, @ExceptionHandler๋ฅผ ํ†ตํ•œ ํŽธํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€ํ•˜๋‹ค. ์ง์ ‘ Try - catch๋กœ ์žก์•„์„œ ์‘๋‹ต์„ ๋‚ด๋ ค์ฃผ๋Š” ๋ฐฉ๋ฒ• ๋ฐ–์—” ์—†๋‹ค. ํ•˜์ง€๋งŒ, ์Šคํ”„๋ง ์„œํ๋ฆฌํ‹ฐ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ—ˆ์ˆ ํ•˜์ง„ ์•Š๋‹ค. ์„œํ๋ฆฌํ‹ฐ ํ•„ํ„ฐ ์ฒด์ธ์˜ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ๋งˆ์ง€๋ง‰ ์ฆˆ์Œ์— ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•„ํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” AuthenticationEntryPoint์™€ AccessDeniedHandler๋ฅผ ๊ตฌํ˜„ํ•ด ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ๊ณผ์ •์—์„œ ์ผ์–ด๋‚œ ์˜ˆ์™ธ์— ๋Œ€.. 2022. 8. 21.
์Šคํ”„๋ง ๋ถ€ํŠธ ์†Œ๋‚˜ํ๋ธŒ(SonarQube) ์ ์šฉ + PostgreSql ๊ฐˆ์ˆ˜๋ก ์‰ฝ์ง€ ์•Š๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ€๋Š” ๊ณผ์ •์—์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ถ€๋ถ„์€ ๊ทนํžˆ ์ผ๋ถ€ ๊ณผ์ •์ž„์„ ๊นจ๋‹ฌ์•˜๋‹ค. ์˜คํžˆ๋ ค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์‹œ๊ฐ„์ด ๋” ๊ทธ๋ฆฝ๋‹ค. ๋ฆฌํŒฉํ„ฐ๋ง๊ณผ ๊ธฐ์ˆ  ์ ์šฉ ๋ฐ ๋ฒ„์ „ ๋งž์ถค ์ˆ˜์ •์— ์‹œ๊ฐ„์„ ๋” ์Ÿ๋Š” ์š”์ฆ˜์ด๋‹ค. ํด๋ฆฐ ํ•œ ์ฝ”๋“œ๋ฅผ ์œ„ํ•ด ์†์ˆ˜ ๋ฆฌํŒฉํ„ฐ๋ง์„ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๋ž€ ๊ฒƒ์ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ SonarQube๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ์ด๋ฅผ ์ ์šฉํ•ด ๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค. ์ •๋ง ์˜ค๋ž˜ ๊ฑธ๋ ธ๊ณ , ์ •ํ™•ํ•˜์ง„ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚˜๋ฆ„๋Œ€๋กœ ์ ์šฉํ–ˆ๋˜ ๊ณผ์ •์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค. (ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ๋ฌดํ•œํ•œ ๋Œ“๊ธ€ ๊ฐ์‚ฌํžˆ ๋ฐ›๊ฒ ์Šต๋‹ˆ๋‹ค!) ์ด๊ฒƒ์ด ์™„๋ฃŒ๋œ ํ›„ AWS lightsales, ec2 ์ ์šฉ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•ด๋ณด์•„์•ผ๊ฒ ๋‹ค. ์ •์  ๋ถ„์„ ๋„๊ตฌ ์ฝ”๋“œ์˜ ํ’ˆ์งˆ์— ๋Œ€ํ•ด ๊ณ ๋ คํ•  ๋•Œ ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค. ์ง€์†์ ์ธ .. 2022. 7. 5.
ใ€Œํ…Œ์ŠคํŠธ ์ฝ”๋“œ & Spring REST Docsใ€ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋Š” ์™„์„ฑ์ด ๋˜์—ˆ๋‹ค. ์ด์ œ๋Š” ์„ธ๋ถ€์ ์ธ ๋””ํ…Œ์ผ์— ์‹ ๊ฒฝ์„ ์“ฐ๋ฉฐ ๋ฆฌํŒฉํ„ฐ๋ง๊ณผ ๊ทธ์— ํ•„์š”ํ•œ ๊ฐœ๋… ์ •๋ฆฌ๋ฅผ ํ•˜๋ฉฐ ํ”„๋กœ์ ํŠธ์— ์ ์šฉ์‹œํ‚ค๊ณ  ์žˆ๋‹ค. REST API๋ฅผ ์ฒ˜์Œ ์„ค๊ณ„ํ•ด ๋ณด์•˜๋Š”๋ฐ, ๋ถ€์กฑํ•œ ์ ์ด ๋งŽ์•˜์ง€๋งŒ ์‹ ์„ ํ•œ ๊ฒฝํ—˜์ด๊ณ  ์งง์€ ๊ธฐ๊ฐ„ ๋‚ด์— ๋ฐฐ์šด ๊ฒƒ์ด ๋งŽ์€ ์„ค๊ณ„ ๊ณผ์ •์ด์—ˆ๋‹ค. API๋ฅผ ์„ค๊ณ„ํ•˜๋ฉด ๊ทธ์— ๋งž๋Š” ๋ช…์„ธ๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ๋ณดํ†ต Swagger๋‚˜ Spring REST Docs ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. Swagger๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•ด ํŽธํ•˜๊ฒŒ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•  ์ˆœ ์žˆ์ง€๋งŒ, ํ”„๋กœ์ ํŠธ์˜ ํ™•์‹ค์„ฑ๊ณผ ์ •ํ™•์„ฑ์„ ๋’ท๋ฐ›์นจํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์ด ํ•„์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— Spring REST Docs๋ฅผ ์ด์šฉํ•˜๊ธฐ๋กœ ์ƒ๊ฐํ•˜๋ฉฐ ์ ์šฉํ•ด๋ณด์•˜๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ํฌ๊ฒŒ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ๋‹ค. ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ.. 2022. 6. 20.
2022.06.07 ใ€Œํ”„๋กœ์ ํŠธ ์ค‘๊ฐ„ ์ ๊ฒ€ใ€ ์ด๋ฒˆ 4์ผ ๊ฐ„ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง‘์ค‘ ์žˆ๊ฒŒ ํ•˜๋А๋ผ ๋ธ”๋กœ๊ทธ ๊ธ€ ์ž‘์„ฑ๋„ ๋ชปํ•˜๊ณ  ์ฝ”ํ…Œ ์ค€๋น„๋„ ์ œ๋Œ€๋กœ ๋ชปํ–ˆ๋‹ค ใ…œใ…œ ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ์—๋Š” ์†๋„์— ๋Œ€ํ•œ ๋ฐ˜์„ฑ์„ ๋งŽ์ด ํ–ˆ์—ˆ๋Š”๋ฐ, ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ  ํ”„๋กœ์ ํŠธ์˜ ํ‹€์ด ์žกํž์ˆ˜๋ก ๊ทธ ๋ฐ˜์„ฑ์€ ํฐ ์˜ค์‚ฐ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ํ€„๋ฆฌํ‹ฐ ์žˆ๊ณ , ํด๋ฆฐ ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ๊ฝค๋‚˜ ๊ณต๋“ค์ด๋ฉฐ ์‹œ๊ฐ„์„ ํˆฌ์žํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค. ์ฆ‰, ๋” ํšจ์œจ์ ์ธ ์‹œ๊ฐ„ ๋ถ„๋ฐฐ๊ฐ€ ๊ด€๊ฑด์ด๋‹ค. ์ด์ œ ํ”„๋กœ์ ํŠธ์—์„œ ๊ณ„ํšํ•œ ๊ธฐ๋Šฅ์€ ๊ฑฐ์˜ ๊ตฌ์„ฑ์ด ๋œ ์ƒํ™ฉ์ด๋‹ค. ๊ฑฐ์ง„ 1๋‹ฌ์ด ๊ฑธ๋ ธ๋‹ค. ๊ณ„ํšํ•œ ๊ฒƒ์— ๋น„ํ•ด ๋Šฆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๋ณธ๊ฒฉ์ ์ธ ๋ฆฌํŒฉํ„ฐ๋ง์„ ์ ์šฉํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค. ์ฒ˜์Œ์œผ๋กœ ํ˜ผ์ž์„œ ์ œ๋Œ€๋กœ ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ์• ์ฐฉ์ด ๊ฐ€๊ธฐ๋„ ํ•œ๋‹ค. ์ด์ œ ๋ฐ˜๋„ ์•ˆ ์™”๊ณ , ๊ฐˆ ๊ธธ์ด ํ—˜๋‚œํ•  ํ…Œ์ง€๋งŒ ์ด๋ค„๋ณด์ž~ ์ง€๋‚œ 4์ผ ๊ฐ„ ๊ตฌํ˜„ ๋ชฉ๋ก ์นด์นด์˜ค ํŽ˜์ด REST AP.. 2022. 6. 7.
2022.05.21 ใ€Œ Shopping Cart API ๋งŒ๋“ค๊ธฐ ใ€ ์–ด์ œ๋ถ€๋กœ ์ธ์ฆ, ์ธ๊ฐ€ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค. ์ง„์งœ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค. ์†๋„๋ฅผ ์ข€ ๋” ๋‚ผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์˜ค๋Š˜๋ถ€ํ„ฐ๋Š” ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ๋งŒ๋“ค๊ฑด๋Œ€ ์ด๋ฒˆ์—๋Š” DB๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•ด ๋ณผ ์ƒ๊ฐ์ด๋‹ค. ์ฟ ํ‚ค์— ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋„ฃ์–ด์„œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ•œ ๋•Œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋“ค์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๋„ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ–ˆ๋Š”๋ฐ ๋ณดํ†ต ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋Š” ์ฟ ํ‚ค๋‚˜ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ด์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๋‚˜๋Š” ์˜จ์ „ํ•œ API๋กœ๋งŒ ๊ตฌํ˜„์„ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค. ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ๊นŒ? ์ผ๋‹จ DB์— ์ €์žฅ์„ ๋”ฐ๋กœ ํ•˜์ง€ ์•Š๊ณ  ์ฟ ํ‚ค๋กœ ๊ตฌํ˜„์„ ํ•˜๊ธฐ๋กœ ๊ฒฐ์‹ฌํ–ˆ๋‹ค. ์ฃผ์š” ๊ธฐ๋Šฅ์„ ์ƒ๊ฐํ•ด๋ณด์•˜๋‹ค. ๊ธฐ๋Šฅ 1. ์ƒํ’ˆ์„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ถ”๊ฐ€ 2. ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๊ธด ์ƒํ’ˆ ๋ชฉ๋ก ์กฐํšŒ => ์ˆ˜์ •๊ณผ ์‚ญ์ œ๊ฐ€ ์—†๋Š” ์ด์œ ๋Š” ํ”„๋ŸฐํŠธ๋‹จ์—์„œ ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š.. 2022. 5. 21.
2022.05.14 ใ€ŒJWT ์ธ์ฆใ€ ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ Session ๋กœ๊ทธ์ธ์ด ์•„๋‹Œ JWT๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธ์ฆ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค. ํ† ํฐ์„ ์ฒ˜์Œ ์‚ฌ์šฉํ–ˆ๋‹ค ๋ณด๋‹ˆ ์•Œ์•„๊ฐ€๋Š”๋ฐ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ๋‚˜๋Š” ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ๋‚˜ ์Šคํ”„๋ง ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ์ด์šฉํ•ด ํ† ํฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ•˜๋ ค๊ณ  ํ–ˆ์–ด์„œ ๋” ์‰ฝ์ง€ ์•Š์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ ์ธ์ฆ์—์„œ Session์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ์„œ๋ฒ„์˜ ๊ทœ๋ชจ๊ฐ€ ํ™•์žฅ๋  ๋•Œ์˜ ์ธ์ฆ ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ JWT๋ฅผ ์ด์šฉํ•œ ์ธ์ฆ๋„ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์˜ ํ”„๋กœ์ ํŠธ์— ๋งž๋Š” ๋‹จ๊ณ„๊ฐ€ ์–ด๋””์ธ์ง€์— ์ƒ๋‹นํžˆ ํ—ท๊ฐˆ๋ ธ๋˜ ํ•œ ์ฃผ์˜€๋‹ค. ์ธ์ฆ ์ž‘์—…์„ ํ•˜๋ฉฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋˜ ๋ถ€๋ถ„์ด๋‚˜ ๊ตฌํ˜„ํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ฒ ๋‹ค. Rest API๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์ธ์ฆ์€ session ๊ธฐ๋ฐ˜์ด ์•„๋‹Œ ํ† ํฐ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ๋” restf.. 2022. 5. 14.
2022.04.24์˜ ๊ธฐ๋ก โ–ถ ํ•ด์•ผํ•  ์ผ 1. Gradle test code ์ˆ˜์ • 2. mysql CH7. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ์ •๋ฆฌ, CH8. ์ธ๋ฑ์Šค ์ค‘๊ฐ„ 3. Boot ํ”„๋กœ์ ํŠธ ๊ตฌ์ƒ (์ ์‹ฌ ๋จน๊ณ  ์Ÿ์•„๋ถ‡์ž) https://github.com/GroovyArea/Shop-with-SpringBoot/wiki 4. ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1๋ฌธ์ œ โ–ท ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฌธ์ œ 1 : gameCount()๋ฅผ ํ˜ธ์ถœ ํ•  ๋•Œ๋งˆ๋‹ค ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ๋จ ํ•ด๊ฒฐ : ์ œ์–ด๋ฌธ์„ ํ†ตํ•ด ํ•ด๊ฒฐ ๋ฌธ์ œ 2 : @ParameterizedTest ์ง„ํ–‰ ์‹œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ง‘์–ด๋„ฃ์–ด์ฃผ์ง€ ์•Š์•„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฌธ์ œ ๋ฐœ์ƒ 2022. 4. 24.
2022.04.22์˜ ๊ธฐ๋ก โ–ถ ํŒŒํŠธ 1 (10์‹œ ~ 7์‹œ) 1. Gradle Test ์ฝ”๋“œ ์ˆ˜์ • (PrintGameResult, ComputerNumber ๋ถ€๋ถ„) 2. ์ž์†Œ์„œ ์ˆ˜์ • 3. Boot project ๊ตฌ์ƒ 4. Spring MVC ๋‚ด๋ถ€ ๊ฐœ๋… ์ •๋ฆฌ 5. ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1๋ฌธ์ œ (2๋ฌธ์ œ) 6. mysql Ch5. ํŠธ๋žœ์žญ์…˜, CH6. ๋ฐ์ดํ„ฐ ์••์ถ• 7. ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” ์•„์ดํ…œ 1 ์ •๋ฆฌ โ–ท ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ : ์ •์ˆ˜์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ import java.util.Arrays; class Solution { public long solution(long n) { long answer = 0; String number = String.valueOf(n); String stringNum = ""; char[] numArr = new char[num.. 2022. 4. 22.
๋ฐ˜์‘ํ˜•