๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€419

์ข‹์•„์š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‚ดํŽด๋ณด๋Š” ๋™์‹œ์„ฑ ์ด์Šˆ (synchronized) ์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋™์‹œ์„ฑ(Concurrency)์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์˜ˆ์ œ ์ฝ”๋“œ๋Š” ๊นƒํ—ˆ๋ธŒ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.) ๋™์‹œ์„ฑ(Concurrency) ๊ฐœ๋… ๋„ค์ด๋ฒ„ ์‚ฌ์ „์— ๊ฒ€์ƒ‰ํ•ด๋ณธ ๋™์‹œ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋‘ ์‚ฌ๊ฑด์ด ๊ฐ™์€ ์‹œ๊ฐ„์— ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ์ด๋ฅด๋Š” ๋ง ๋Œ€๋ถ€๋ถ„์˜ ์›น ์„œ๋ฒ„๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์ฒญ(ํด๋ผ์ด์–ธํŠธ)์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋Š” ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ๋™์‹œ์— ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์™€ ๋™์ผํ•œ ๋งฅ๋ฝ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด๊ธฐ ์œ„ํ•ด ๊ฒŒ์‹œ๊ธ€์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์‹œ์— ์ข‹์•„์š”๋ฅผ ํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์œ„ ๊ทธ๋ฆผ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. User A๊ฐ€ ๊ฒŒ์‹œ๊ธ€ 1์— ์ข‹์•„์š”๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ likeCount ์กฐํšŒ (likeCount = 0) User B๋„ ๊ฒŒ์‹œ๊ธ€ .. 2023. 2. 26.
Spring ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ์„ธ์…˜ ๊ด€๋ฆฌํ•˜๊ธฐ (Redis Session Clustering) ๐Ÿ”— Spring ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ์„ธ์…˜ ๊ด€๋ฆฌํ•˜๊ธฐ(์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง) ์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์—ฌ๋Ÿฌ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ ์„ธ์…˜์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์ฝ”๋“œ๋Š” ๊นƒํ—ˆ๋ธŒ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.) ๋‹จ์ผ ์„œ๋ฒ„์—์„œ ์„ธ์…˜์„ ๊ด€๋ฆฌํ•œ๋‹ค๋ฉด ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†๊ฒ ์ง€๋งŒ, ๋ณดํ†ต ์Šค์ผ€์ผ ์•„์›ƒ ๋“ฑ์„ ํ†ตํ•ด ๋ถ„์‚ฐ๋œ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ ์„ธ์…˜์„ ๊ด€๋ฆฌํ•  ๋•Œ(๋กœ๊ทธ์ธ ์œ ์ €์˜ ์„ธ์…˜ ์ •๋ณด) ์„ธ์…˜ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋กœ ์‚ดํŽด๋ณผ๊นŒ์š”? ์‚ฌ์šฉ์ž A๊ฐ€ localhost:8080ํฌํŠธ๋กœ login ํ˜ธ์ถœ ์‹œ ์„ธ์…˜์ด ์ƒ์„ฑ๋˜๊ณ  JSESSIONID์— ์ž„์˜์˜ ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. JSESSIONID? - ์„ธ์…˜์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Tomcat Container์—์„œ ๋ฐœ๊ธ‰ํ•˜๋Š” Key์ด๊ณ  Value๋ฅผ ํ†ตํ•ด ์„ธ์…˜์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ž‘ ๋ฐฉ์‹? 1. ๋ธŒ๋ผ์šฐ.. 2023. 2. 12.
Spring DispatcherServlet(๋””์ŠคํŒจ์ฒ˜์„œ๋ธ”๋ฆฟ) ๊ฐœ๋…๋ถ€ํ„ฐ ๋™์ž‘ ๊ณผ์ •๊นŒ์ง€ ๐Ÿ”— DispatcherServlet ์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Spring์—์„œ HTTP ์š”์ฒญ ๋ฐ ์‘๋‹ต๊ณผ ๊ด€๋ จํ•˜์—ฌ ๊ฐ€์žฅ ํ•ต์‹ฌ ๊ธฐ์ˆ ์ธ DispatcherServlet์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ํ‰์†Œ์— ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ๋Š” ์–ด๋А ์ •๋„ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ ์–ด๋– ํ•œ ๊ณผ์ •์„ ํ†ตํ•ด ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ์ด ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›๊ณ , ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š”์ง€ ๋‚ด๋ถ€ ๋™์ž‘์€ ์ž˜ ๋ชฐ๋ž์—ˆ๋Š”๋ฐ์š”, ์ด๋ฒˆ ๊ธฐํšŒ์— ์ •๋ฆฌํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. (ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ง์”€ํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ™) | DispatcherServlet ๊ฐœ๋… ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ(Front Controller)๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋Š” DispatcherServlet์€ HTTP ํ”„๋กœํ† ์ฝœ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์„ ๋จผ์ € ๋ฐ›์•„์„œ ์ ํ•ฉํ•œ ์ปจํŠธ๋กค๋Ÿฌ์— ์œ„์ž„(Delega.. 2023. 2. 11.
EasyRandom - Java beans๋ฅผ ๋žœ๋ค์œผ๋กœ ์ƒ์„ฑํ•ด ์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๐Ÿ”— EasyRandom - Java beans๋ฅผ ๋žœ๋ค ์ƒ์„ฑํ•ด ์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ณดํ†ต ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๊ฐ์ฒด๋ฅผ ์ž„์˜๋กœ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด์˜ ํ•„๋“œ๊ฐ€ 1~2๊ฐœ๋ผ๋ฉด ์ƒ๊ด€์—†๊ฒ ์ง€๋งŒ, ์กฐ๊ธˆ ๋งŽ์•„์ง„๋‹ค๋ฉด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์€๊ทผ(?) ๊ท€์ฐฎ์€๋ฐ์š”, ์œ„ ์‚ฌ์ง„์ฒ˜๋Ÿผ ๊ฐ ํ•„๋“œ์— ๋งž๋Š” ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ์„ค์ •ํ•ด ์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฝค๋‚˜ ๋ฒˆ๊ฑฐ๋กœ์šด ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์„ ๋•Œ, ๊ฐ์ฒด์˜ ํ•„๋“œ๋ฅผ ๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ  ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ EasyRandom ์ž…๋‹ˆ๋‹ค. (์‚ฌ์šฉ๋ฒ•๋„ ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•˜๋‹ˆ, ์ž์„ธํ•œ ๊ฑด ๊นƒํ—ˆ๋ธŒ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.) ๐Ÿ”— ์‚ฌ์šฉ๋ฒ• ์˜์กด์„ฑ ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ˆ์ด๋“ค์€ testImplementation์œผ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. Member ํด๋ž˜์Šค Post ํด๋ž˜์Šค EasyRandom Cust.. 2023. 1. 27.
SpringBoot Multi DataSource - JPA ๐Ÿ”— SpringBoot์—์„œ ๋ฉ€ํ‹ฐ ๋ฐ์ดํ„ฐ์†Œ์Šค ์„ค์ •ํ•˜๊ธฐ - JPA ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ์š”, ์ด๋Ÿฐ ๊ฒฝ์šฐ DataSource๋ฅผ ์ปค์Šคํ…€์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์„ค์ •์„ ํ†ตํ•ด ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ฝ”๋“œ๋Š” GitHub์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐ŸŽˆ application.yml yml ํŒŒ์ผ์— ๋‘ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(datasource, datasource-second)๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. (๊ธฐ๋ณธ ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •๊ณผ ๋‹ฌ๋ฆฌ ๋ฉ€ํ‹ฐ ๋ฐ์ดํ„ฐ ์†Œ์Šค HikariConfig์—์„œ๋Š” url์ด ์•„๋‹Œ jdbc-url์œผ๋กœ ๋„ค์ด๋ฐ์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.) ๐ŸŽˆ DataSource Configuration ์•„๋ž˜ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•  ํŒจ.. 2023. 1. 21.
Spring Batch (11) Repeat ๐Ÿ”— Spring Batch Repeat Batch Processing๋Š” ๋‹จ์ˆœ ์ตœ์ ํ™” ๋˜๋Š” ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์„ ์ „๋žตํ™”ํ•˜๊ณ  ์ผ๋ฐ˜ํ™”ํ•˜๊ธฐ์œ„ํ•ด Spring Batch์—์„œ๋Š” ๋ฐ˜๋ณต ์ž‘์—…์„ ์ œ์–ดํ•˜๋Š” RepeatOperation ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด๋Š” RepeatTemplate ํด๋ž˜์Šค ์ž…๋‹ˆ๋‹ค ๐Ÿ”— ๋ฐ˜๋ณต ์ข…๋ฃŒ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ํ•ญ๋ชฉ Spring Batch์—์„œ์˜ ๋ฐ˜๋ณต ์ž‘์—…์— ๋Œ€ํ•œ ์ข…๋ฃŒ ์ฒ˜๋ฆฌ๋Š” RepeatTemplate ํด๋ž˜์Šค์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1. RepeatStatus ์Šคํ”„๋ง ๋ฐฐ์น˜์˜ ์ž‘์—…์ด ์ข…๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ Enum 2. CompletionPolicy RepeatTemplate ๋‚ด๋ถ€์—์„œ ๋ฐ˜๋ณต ๋ฉ”์„œ๋“œ์˜ ์ข…๋ฃŒ๋Š” CompletionPolicy์— ์˜ํ•ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. .. 2023. 1. 15.
Spring AOP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ์ •๋ณด ๋กœ๊น…ํ•˜๊ธฐ ์„œ๋น„์Šค์—์„œ ํด๋ผ์ด์–ธํŠธ์˜ ๋ชจ๋“  ํ˜ธ์ถœ์— ๋Œ€ํ•ด ์ €์žฅํ•˜์—ฌ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ, ๋‹จ์ˆœํžˆ ๋กœ๊ทธ๋กœ ๋‚จ๊ธธ์ˆ˜๋„ ์žˆ๊ณ  ํ˜น์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ชจ๋“  ์š”์ฒญ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ์ •๋ณด(URI, Http Method, payload ๋“ฑ๋“ฑ)๋“ค์„ ๋กœ๊น… ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ฝ”๋“œ๋Š” GitHub์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :) ๐Ÿ”— ApiRequestEntity ApiRequestEntity ํด๋ž˜์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•  ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ๊ฐ ํ•„๋“œ์˜ ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. id : PK methodValue : Http Method apiUri : Request URI payload : Request Body req.. 2023. 1. 14.
MySQL EXPLAIN ์‹คํ–‰๊ณ„ํš ๋งˆ์Šคํ„ฐํ•˜๊ธฐ(feat. RealMySQL 8.0) ๐Ÿ’ฏ MySQL EXPLAIN ์‹คํ–‰๊ณ„ํš ๋งˆ์Šคํ„ฐํ•˜๊ธฐ(feat. RealMySQL 8.0) ์‹คํ–‰ ๊ณ„ํš(EXPLAIN) ์ด๋ž€? ๋Œ€๋ถ€๋ถ„์˜ DBMS๋Š” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ณ , ๋น ๋ฅด๊ฒŒ ์ €์žฅ ๋ฐ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ฃผ๋ชฉ์ ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž์˜ ์ฟผ๋ฆฌ๋ฅผ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์ตœ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋„๋ก ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ํ•ญ์ƒ ์ตœ์ ์˜ ์‹คํ–‰ ๊ณ„ํš์„ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฏ€๋กœ DBMS ์„œ๋ฒ„๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ๊ด€๋ฆฌ์ž๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋„๋ก EXPLAIN ๋ช…๋ น์œผ๋กœ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์ˆ˜๋ฆฝํ•œ ์‹คํ–‰ ๊ณ„ํš์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: https://github.com/datacharmer/test_db ์‹คํ–‰ ๊ณ„ํš ์˜๋ฏธ id SELECT ์ฟผ๋ฆฌ ๋ณ„ ๋ถ€์—ฌ๋˜๋Š” ์‹๋ณ„์ž ๊ฐ’ se.. 2023. 1. 7.
๋ฌด๋‚œํ–ˆ๋˜ 2022๋…„, ์ƒˆ๋กœ์šด ์‹œ์ž‘ 2023๋…„ ๐Ÿ—“ ๋ฌด๋‚œํ–ˆ๋˜ 2022๋…„, ์ƒˆ๋กœ์šด ์‹œ์ž‘ 2023๋…„ ์ž‘๋…„ ํšŒ๊ณ ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋„ ๋ฒŒ์จ 2021๋…„์ด ๋๋‚ฌ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, 2022๋…„๋„ ๋™์ผํ•˜๊ฒŒ ๋ฒŒ์จ๊ฐ€ ๋ฌด์ƒ‰ํ•  ๋งŒํผ ๋น ๋ฅด๊ฒŒ ์ง€๋‚˜๊ฐ€๋ฒ„๋ ธ๋‹ค. (์—ฐ๋ง์— ๊ณ ํ–ฅ์„ ๋‹ค๋…€์˜ค๋‹ค ๋ณด๋‹ˆ ์ž‘์„ฑ ์‹œ์ ์€ 2022๋…„์ด์ง€๋งŒ ๋ฐœํ–‰ ์‹œ์ ์€ 2023๋…„์ด ๋˜์–ด๋ฒ„๋ ธ๋‹ค.. ๐Ÿ˜ญ ๋ฐœํ–‰ ์‹œ์ ์€ 2023๋…„์ด์ง€๋งŒ ์ž‘์„ฑ์€ 2022๋…„ 12์›” 31์ผ ๊ธฐ์ค€์ด๋‹ค.) 2021๋…„๋„ ํ›„๋”ฑ ์ง€๋‚˜๊ฐ€๋ฒ„๋ ธ๋Š”๋ฐ, ์˜ฌํ•ด๋Š” ์–ด์ฉŒ๋ฉด ๋” ๋น ๋ฅด๊ฒŒ ์ง€๋‚˜๊ฐ„ ๊ฒƒ๋งŒ ๊ฐ™์€ ๋А๋‚Œ์ด ๋“ ๋‹ค. ์ด๋ฒˆ ๋‹ฌ ์ดˆ๋ถ€ํ„ฐ ๋ฒŒ์จ 12์›”์ด๋ผ๊ณ  ๋…ธ๋ž˜๋ฅผ ๋ถˆ๋ €๋Š”๋ฐ, ์ •์‹ ์„ ์ฐจ๋ ค๋ณด๋‹ˆ ๋ฒŒ์จ 2022๋…„ ๋งˆ์ง€๋ง‰ ๋‚ ์ด ๋˜์–ด๋ฒ„๋ ธ๋‹ค. ์ตœ๊ทผ์— ๋ดค์—ˆ๋˜ ํšŒ์‚ฌ ๋‹ค๋‹ˆ๋ฉด์„œ ๋ฐ”์œ ์™€์ค‘์—๋„ ์„ฑ์žฅํ•˜๋Š” ํŒ์ด๋ผ๋Š” ํฌ์ŠคํŒ…์—์„œ ์ฒซ ๋ฌธ์žฅ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹œ์ž‘ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋‚ด ์–˜๊ธฐ๋ฅผ ํ•˜๋Š” ๊ฒƒ๋งŒ ๊ฐ™์•„ ๋„ˆ๋ฌด๋‚˜ ๊ณต๊ฐ์ด ๋˜์—ˆ๋‹ค. ๐Ÿ˜‚.. 2023. 1. 2.
Spring Batch (10) @JobScope, @StepScope ๐Ÿ”— Spring Batch @JobScope, @StepScope ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” JobParametersValidator์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜๋Š”๋ฐ์š” ๊ฐ„๋žตํžˆ ์ •๋ฆฌํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Job ์‹คํ–‰ ์‹œ ํ•„์ˆ˜์ ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ์—ญํ• ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ DefaultJobParametersValidator ๊ตฌํ˜„์ฒด๋ฅผ ์ง€์›ํ•˜๋ฉฐ, JobParametersValidator ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์—ฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€์ฆํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์— ์ •๋ฆฌํ•  @JobScope, @StepScope๋Š” ์ง€๋‚œ Spring Batch Job ํฌ์ŠคํŒ…์—์„œ JobParameters๋ฅผ ๋ฐ›์„ ๋•Œ ๊ฐ„๋žตํžˆ ์‚ฌ์šฉ์„ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋กœ ์ƒ์„ฑ : JobParameterBuilder SPEL ์‚ฌ์šฉ : @Value(“#{jobParameter[reques.. 2022. 12. 8.
๋ฐ˜์‘ํ˜•