๋ฐ์ํ IT Blog404 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. [Java DeepDive] - Map(HashMap) 1. ๊ฐ๋ , ํ๋, ์์ฑ์ ๐ Map(HashMap) Java์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ๋ List์ Map์ด ์๋๊น ์๊ฐํฉ๋๋ค. ์ด๋์์๋ ๊ต์ฅํ ๋ง์ด ํ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ๋ก ์ ๋ํ ๋ง์ด ์ฌ์ฉํ๋๋ฐ์, ์ด๋ฒ์๋ Map ์ธํฐํ์ด์ค์ ๊ฐ๋ ๊ณผ ์ ๊ณต๋๋ API๋ค, ๊ตฌํ์ฒด์ธ HashMap์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. (์์ ์ฝ๋๋ ๊นํ๋ธ์์ ํ์ธํ์ค ์ ์์ผ๋ฉฐ, ๋ฒ์ ์ Java 11์ ์ฌ์ฉํ์ต๋๋ค.) Map ์ธํฐํ์ด์ค๋ Collection ํ๋ ์์ํฌ์๋ ๋ค๋ฅด๊ฒ ํค์ ๊ฐ์ ํ๋์ ์์ผ๋ก ์ ์ฅํ๋ Key-Value ํ์์ ์๋ฃ๊ตฌ์กฐ ์ ๋๋ค. Key๋ ์ด๋ฆ ๊ทธ๋๋ก ๊ฐ(Value)์ ์ฐพ๊ธฐ ์ํ ์ญํ ์ ํ๋ฉฐ Map ์ธํฐํ์ด์ค์ key, value๋ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. key๋ ์ค๋ณต์ด ๋ถ๊ฐ๋ฅํ์ง๋ง, value๋ ์ค๋ณต์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ฐ .. 2022. 11. 27. 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. ์ด์ 1 2 3 4 5 6 7 ยทยทยท 41 ๋ค์ ๋ฐ์ํ