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

Spring45

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.
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.
Spring Batch (9) JobParametersValidator ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” JobLauncher์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. JobLauncher๋Š” ์‹ค์ œ Spring Batch Job์„ ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ, Job & JobParameters๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ๋ฐฐ์น˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ํ›„ JobExecution์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Spring Batch์—์„œ๋Š” BatchAutoConfiguration ํด๋ž˜์Šค ๋‚ด์˜ JobLauncherApplicationRunner ํด๋ž˜์Šค๊ฐ€ Job์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ JobParametersValidator ๊ธฐ๋ณธ ๊ฐœ๋… Job ์‹คํ–‰ ์‹œ ํ•„์ˆ˜์ ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ์—ญํ• ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ DefaultJobParametersValidator ๊ตฌํ˜„์ฒด๋ฅผ ์ง€์›ํ•˜๋ฉฐ, JobParametersValidator ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์—ฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€์ฆํ•  ์ˆ˜๋„ .. 2022. 11. 13.
Spring Batch (8) JobLauncher ๐Ÿ“Ž JobLauncher ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” JobRepository์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. JobRepository๋Š” Spring Batch ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ JobInstance, JobExecution, StepExeuction ๋“ฑ Batch์™€ ๊ด€๋ จ๋œ ๋„๋ฉ”์ธ์˜ CRUD ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Spring Batch Job์˜ ์‹คํ–‰ ์ฃผ์ฒด์ธ JobLauncher์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ JobLauncher ๊ธฐ๋ณธ ๊ฐœ๋… Spring Batch Job์„ ์‹คํ–‰์‹œํ‚ค๋Š” ์—ญํ•  Job & JobParameters๋ฅผ ์ธ์ž๋กœ ๋ฐ›์œผ๋ฉฐ ์š”์ฒญ๋œ ๋ฐฐ์น˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ํ›„ JobExecution์„ ๋ฐ˜ํ™˜ Spring Batch์—์„œ๋Š” BatchAutoConfiguration ํด๋ž˜์Šค ๋‚ด์— ์กด์žฌํ•˜๋Š” JobLauncherA.. 2022. 11. 11.
Spring Batch (7) JobRepository ๐Ÿ“Ž JobRepository ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” Spring Batch์˜ ExecutionContext์— ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ExecutionContext๋Š” Spring Batch ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ง€์›ํ•˜๋Š” key/value ํ˜•์‹์˜ ๊ณต์œ  ๊ฐ์ฒด๋กœ Job์„ ์‹คํ–‰ํ•˜๋ฉด์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ Job ๊ฐ„์—๋Š” ๊ณต์œ ๊ฐ€ ์•ˆ๋˜์ง€๋งŒ, ๋™์ผํ•œ Job ๋‚ด์˜ ์„œ๋กœ ๋‹ค๋ฅธ Step ์‚ฌ์ด์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Batch Job ๋‚ด์˜ Step ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ ๊ณต์œ  ๋ฐ ์กฐ์ž‘์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ExecutionContext๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Spring Batch JobRepository์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์— Job & JobParameters๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์กฐํšŒํ•œ ํ›„ JobIn.. 2022. 11. 8.
Spring Batch (6) ExecutionContext ๐Ÿ“Ž ExecutionContext ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” Step, StepExecution์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” JobExecution ๋ฐ StepExecution ๊ฐ์ฒด์— ์กด์žฌํ•˜๋Š” ExecutionContext์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์˜ˆ์ œ ์ฝ”๋“œ๋Š” GitHub์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ƒ) ๐Ÿ“Œ ํ•ด๋‹น ํฌ์ŠคํŒ…์˜ ๋ชฉํ‘œ Spring Batch ExecutionContext (JobExecution, StepExecution) ๐Ÿ“Œ ExecutionContext ๊ธฐ๋ณธ ๊ฐœ๋… Spring Batch ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ง€์›ํ•˜๋Š” key/value ํ˜•์‹ ๊ณต์œ  ๊ฐ์ฒด๋กœ Job์„ ์‹คํ–‰ํ•˜๋ฉด์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„ ๊ณต์œ  ๋ฒ”์œ„ Job ๋ฒ”์œ„ - ๊ฐ Job์˜ JobExecution์— ์ €์žฅ๋˜๋ฉฐ ์„œ๋กœ ๋‹ค๋ฅธ Job ๊ฐ„์—๋Š” ๊ณต์œ ๊ฐ€.. 2022. 11. 5.
Spring Batch (5) Step, StepExecution ๐Ÿ“Ž Step, StepExecution ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” Job, JobInstance, JobParameter, JobExecution์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Job์„ ๊ตฌ์„ฑํ•˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„์ธ Step, StepExecution ๊ฐ์ฒด์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์˜ˆ์ œ ์ฝ”๋“œ๋Š” GitHub์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ƒ) ๐Ÿ“Œ ํ•ด๋‹น ํฌ์ŠคํŒ…์˜ ๋ชฉํ‘œ Spring Batch Step Spring Batch StepExecution ๐Ÿ“Œ Step ๊ธฐ๋ณธ ๊ฐœ๋… Step์€ ๋…๋ฆฝ์ ์ด๊ณ  ์ˆœ์ฐจ์ ์ธ Batch Job์„ ์บก์Šํ™”ํ•˜๋Š” ๋„๋ฉ”์ธ ๊ฐ์ฒด Step์—๋Š” ์‹ค์ œ Batch ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Œ Step์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๋งŒํผ ๊ฐ„๋‹จํ•˜๊ฑฐ๋‚˜ ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Œ ๋ชจ๋“  Job์€ ํ•˜๋‚˜ ์ด์ƒ์˜ Step์œผ๋กœ.. 2022. 11. 3.
Spring Batch (4) Job, JobInstance, JobParameters, JobExecution ๐Ÿ“Ž Job, JobInstance, JobParameters, JobExecution ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” Spring Batch์˜ Meta Data Schema์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Job์˜ ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ ๊ฐ์ฒด์ธ JobInstance, JobParameters, JobExecution ๊ฐ์ฒด์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์˜ˆ์ œ ์ฝ”๋“œ๋Š” GitHub์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ƒ) ๐Ÿ“Œ ํ•ด๋‹น ํฌ์ŠคํŒ…์˜ ๋ชฉํ‘œ Spring Batch Job Spring Batch JobInstance Spring Batch JobParameters Spring Batch JobExecution ๐Ÿ“Œ Job ๊ธฐ๋ณธ ๊ฐœ๋… ๋ฐฐ์น˜ ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ์ตœ์ƒ์œ„์˜ ๊ฐœ๋…์œผ๋กœ ์ „์ฒด ๋ฐฐ์น˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์บก์Šํ™”ํ•œ ์—”ํ‹ฐํ‹ฐ Job Configuration์„ ํ†ตํ•ด ์ƒ.. 2022. 11. 1.
๋ฐ˜์‘ํ˜•