๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ด๐Ÿ’ป/๐’๐ฉ๐ซ๐ข๐ง๐  (33)

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[Spring] ์„ฑ๋Šฅ ์ตœ์ ํ™” 1ํŽธ - ๋ถ€ํ•˜ํ…Œ์ŠคํŠธ ngrinder ์„ค์น˜ํ•˜๊ธฐ

ngrinder ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. nGrinder๋Š” Java ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  nGrinder์—์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฐ€์ƒ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋งŒ๋“ค์–ด ํŠธ๋ž˜ํ”ฝ์— ๋ชฐ๋ ธ์„ ๋•Œ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. 1. ngrinder ์„ค์น˜ํ•˜๊ธฐ https://github.com/naver/ngrinder/releasesโ€‹ ์—์„œ ngrinder-controller-3.5.5-p1.war ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œํ•˜๋ฉด ๋œ๋‹ค. ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฝ๊ฒŒ ngrinder ๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ๋‹ค์šด๋ฐ›์€ ํŒŒ์ผ์„ ์œ„์น˜์‹œํ‚ค์ž. ํ•ด๋‹น ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ๋กœ์—์„œ ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  java -jar ngrinder-controller-3.5.9.war --port=8300 ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ์‹คํ–‰๋œ๋‹ค. java ..

[Spring] DTO ๊ตฌ์กฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•ด์•ผํ• ๊นŒ

dto ๊ตฌ์กฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•ด์•ผํ• ์ง€ ๊ณ ๋ฏผ์„ ์ •๋ง ๋งŽ์ด ํ–ˆ๋‹ค. ๋‚˜์˜ ๋ฐฉ๋ฒ•์ด ์ •๋‹ต์ด ์•„๋‹ˆ์ง€๋งŒ ๋‚˜์™€ ๊ฐ™์€ ๊ณ ๋ฏผ์„ ํ•˜๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด ๊ณ ๋ฏผ์„ ๊ธฐ๋กํ•ด๋ณธ๋‹ค. ๐Ÿ˜“ ๊ณ ๋ฏผ์˜ ์„œ๋ง‰ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋งŽ์€ dto ๊ฐ€ ๋งŒ๋“ค์–ด์กŒ๋‹ค. ๊ทธ๋ž˜์„œ ์ฒ˜์Œ์—๋Š” ๋น„์Šทํ•œ dto ๊ฐ์ฒด๋“ค์„ InnerStaticClass ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•˜์˜€๋‹ค. ์šฐ์„  InnerStaicClass ๋ฅผ ์•Œ์•„๋ณด์ž ๐Ÿ”InnerStaicClass ๋‚ด๋ถ€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ์™ธ๋ถ€ ํด๋ž˜์Šค์™€ ๋‚ด๋ถ€ ํด๋ž˜์Šค๊ฐ€ ๊ธด๋ฐ€ํ•œ ๊ด€๊ณ„๋ฅผ ๋งบ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋‚ด๋ถ€ ํด๋ž˜์Šค์—์„œ ์™ธ๋ถ€ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ์„œ๋กœ ๊ด€๋ จ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋ฌถ์–ด์„œ ์ฝ”๋“œ์˜ ์บก์Аํ™”๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. ์™ธ๋ถ€์—์„œ๋Š” ๋‚ด๋ถ€ ํด๋ž˜์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. static์ด ๋ถ™์ง€ ์•Š์•˜์„ ๋•Œ ๋‹จ์  ์ฐธ์กฐ๊ฐ’..

[Spring] QueryDSL

QueryDSL ์ •์ž‘ ํƒ€์ž…์„ ์ด์šฉํ•ด SQL๊ณผ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ์ฟผ๋ฆฌ๋ฅผ ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ด๋„, ์‰ฝ๊ณ  ๊ฐ„๊ฒฐํ•˜๋ฉฐ ๊ทธ ๋ชจ์–‘๋„ ์ฟผ๋ฆฌ์™€ ๋น„์Šทํ•˜๊ฒŒ ๊ฐœ๋ฐœํ• ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ QueryDSL์˜ ์žฅ์  IDE๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ฝ”๋“œ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌธ๋ฒ•์ ์œผ๋กœ ์ž˜๋ชป๋œ ์ฟผ๋ฆฌ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์ •์ƒ์ ์œผ๋กœ ํ™œ์šฉ๋œ QueryDSL์€ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค. ๊ณ ์ •๋œ SQL ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋™์ ์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋ฏ€๋กœ ๊ฐ€๋…์„ฑ ๋ฐ ์ƒ์‚ฐ์„ฑ์ด ํ–ฅ์ƒ๋œ๋‹ค. ๋„๋ฉ”์ธ ํƒ€์ž…๊ณผ ํ”„๋กœํผํ‹ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ฐธ์กฐํ• ์ˆ˜ ์žˆ๋‹ค. QueryDSL ์„ค์ • buildscript { ext { queryDslVersion = "5.0.0" } } plugins { i..

[Spring] ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

์˜ˆ์™ธ(Exception) ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์˜ˆ์™ธ(Exception)๋ž€ ์ž…๋ ฅ๊ฐ’์˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์ฐธ์กฐ๋œ ๊ฐ’์ด ์ž˜๋ชป๋œ ๊ฒฝ์šฐ ๋“ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ ์ฝ”๋“œ ์„ค๊ณ„๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค. ์—๋Ÿฌ(Error) ์ฃผ๋กœ ์ž๋ฐ”์˜ ๊ฐ€์ƒ๋จธ์‹ ์—์„œ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์˜ˆ์™ธ์™€ ๋‹ฌ๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๊ฑฐ์˜ ์—†๋‹ค. ex) ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ(OutOfMemory), ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ(StackOverFlow) ๋ฐœ์ƒ ์‹œ์ ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฏธ๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์˜ˆ๋ฐฉํ•ด์„œ ์ฐจ๋‹จํ•ด์•ผํ•œ๋‹ค. ์˜ˆ์™ธ ํด๋ž˜์Šค ๋ชจ๋“  ์˜ˆ์™ธ ํด๋ž˜์Šค๋Š” Throwable ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค. Exceptionํด๋ž˜์Šค๋Š” ๋‹ค์–‘ํ•œ ์ž์‹ ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. Che..

[Spring] RestTemplate, UriComponentsBuilder

RestTemplate Spring์—์„œ ์ง€์›ํ•˜๋Š” ๊ฐ์ฒด๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ Rest ๋ฐฉ์‹ API๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” Spring ๋‚ด์žฅ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. Spring 3.0๋ถ€ํ„ฐ ์ง€์›๋˜์—ˆ๊ณ , json, xml ์‘๋‹ต์„ ๋ชจ๋‘ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Rest API ์„œ๋น„์Šค๋ฅผ ์š”์ฒญ ํ›„ ์‘๋‹ต ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด์žˆ์œผ๋ฉฐ HTTP ํ”„๋กœํ† ์ฝœ์˜ ๋ฉ”์†Œ๋“œ(ex. GET, POST, DELETE, PUT)๋“ค์— ์ ํ•ฉํ•œ ์—ฌ๋Ÿฌ ๋ฉ”์†Œ๋“œ๋“ค์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Spring Framework 5๋ถ€ํ„ฐ๋Š” WebClient ๋ผ๋Š” ์ƒˆ๋กœ์šด HTTP ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋„์ž…ํ•˜์—ฌ ๊ธฐ์กด์˜ ๋™๊ธฐ์‹ API๋ฅผ ์ œ๊ณตํ•  ๋ฟ ๋งŒ ์•„๋‹ˆ๋ผ ํšจ์œจ์ ์ธ ๋น„์ฐจ๋‹จ ๋ฐ ๋น„๋™๊ธฐ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ง€์›ํ•˜์—ฌ, Spring 5.0 ์ดํ›„ ๋ถ€ํ„ฐ๋Š” RestTemplate๋Š” deprecated ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (WebClient ..

[Spring Batch] JobInstance, JobParameter, JobExecution, JobScope

JobParameter JobParameter๋ž€ job์„ ์‹คํ–‰ํ•  ๋•Œ ์ „๋‹ฌ๋˜๋Š” ๊ฐ’์ด๋‹ค. Job ๊ฐ์ฒด์™€ JobParameter๊ฐ€ ๋งŒ๋‚˜์„œ ์‹คํ–‰๊ฐ€๋Šฅํ•œ ์ž‘์—… ๋‹จ์œ„์ธ JobInstance๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. JobParameter์—๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋  ๊ฐ์ฒด์™€, ๊ทธ ํƒ€์ž…, ๊ทธ๋ฆฌ๊ณ  JobInstance์˜ key๋ฅผ ๋งŒ๋“ค๋•Œ ํ•ด๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ง€ ์—ฌ๋ถ€๊ฐ€ ๋“ค์–ด์žˆ๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…์€ STRING, DATE, LONG, DOUBLE 4๊ฐœ๊ฐ€ ์ •์˜๋˜์–ด์žˆ๋‹ค. JobParameter๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  @StepScope, @JobScope๋ฅผ ์„ ์–ธํ•ด์•ผํ•œ๋‹ค. JobParameters๋Š” ์™ธ๋ถ€์—์„œ ์ฃผ์ž…๋œ parameter๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค. parameter๋ฅผ JobParameters์™€ Spring EL(Expression Language)..