사용자 도구

사이트 도구


springframework:batch

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
springframework:batch [2019/06/19 10:05]
kwon37xi
springframework:batch [2019/12/03 14:10] (현재)
kwon37xi
줄 1: 줄 1:
 ====== Spring Framework Batch ====== ====== Spring Framework Batch ======
   * [[springframework:​springboot:​batch|SpringBoot와 SpringBatch]]   * [[springframework:​springboot:​batch|SpringBoot와 SpringBatch]]
-  * [[http://​www.javaworld.com/​article/​2458888/​spring-framework/​open-source-java-projects-spring-batch.html|Open source Java projects: Spring Batch]] : SpringBatch 2.x의 기본 적인 Tasklet, chunk, reader/​writer/​processor,​ retry 등의 개념 들을 예제와 함께 설명하고 있음. 
-  * [[https://​www.javacodegeeks.com/​2015/​03/​spring-batch-tutorial.html|Spring Batch Tutorial – The ULTIMATE Guide]] 
-  * [[http://​www.mkyong.com/​tutorials/​spring-batch-tutorial/​|Spring Batch Tutorial]] : 매우 상세한 튜토리얼 
-  * [[https://​www.tutorialspoint.com/​spring_batch/​spring_batch_environment.htm|Spring Batch Environment]] 
-  * Spring Batch 2.2 JavaConfig 
-    * [[https://​blog.codecentric.de/​en/​2013/​06/​spring-batch-2-2-javaconfig-part-1-a-comparison-to-xml/​|Spring Batch 2.2 - JavaConfig Part 1: A comparison to XML]] 
-    * [[https://​blog.codecentric.de/​en/​2013/​06/​spring-batch-2-2-javaconfig-part-2-jobparameters-executioncontext-and-stepscope/​|Spring Batch 2.2 - JavaConfig Part 2: JobParameters,​ ExecutionContext and StepScope]] 
-    * [[https://​blog.codecentric.de/​en/​2013/​06/​spring-batch-2-2-javaconfig-part-3-profiles-and-environments/​|Spring Batch 2.2 - JavaConfig Part 3: Profiles and environments]] 
-    * [[https://​blog.codecentric.de/​en/​2013/​06/​spring-batch-2-2-javaconfig-part-4-job-inheritance/​|Spring Batch 2.2 - JavaConfig Part 4: Job inheritance]] 
-    * [[https://​blog.codecentric.de/​en/​2013/​06/​spring-batch-2-2-javaconfig-part-5-modular-configurations/​|Spring Batch 2.2 - JavaConfig Part 5: Modular configurations]] 
-    * [[https://​blog.codecentric.de/​en/​2013/​07/​spring-batch-2-2-javaconfig-part-6-partitioning-and-multi-threaded-step/​|Spring Batch 2.2 - JavaConfig Part 6: Partitioning and Multi-threaded Step]] 
-  * Spring Batch Transaction 
-    * [[https://​blog.codecentric.de/​en/​2012/​03/​transactions-in-spring-batch-part-1-the-basics/​|Transactions in Spring Batch - Part 1: The Basics]] 
-    * [[https://​blog.codecentric.de/​en/​2012/​03/​transactions-in-spring-batch-part-2-restart-cursor-based-reading-and-listeners/​|Transactions in Spring Batch - Part 2: Restart, cursor based reading and listeners]] 
-    * [[https://​blog.codecentric.de/​en/​2012/​03/​transactions-in-spring-batch-part-3-skip-and-retry/​|Transactions in Spring Batch - Part 3: Skip and retry]] 
-  * [[http://​spring.io/​blog/​2015/​02/​23/​springone2gx-replay-spring-batch-performance-tuning|SpringOne2GX Replay: Spring Batch Performance Tuning]] 
-  * [[http://​examples.javacodegeeks.com/​enterprise-java/​spring/​spring-batch-tasklet-example/​|Spring Batch Tasklet Example]] 
-  * [[http://​examples.javacodegeeks.com/​enterprise-java/​spring/​spring-batch-job-example/​|Spring Batch Job Example]] 
-  * [[http://​examples.javacodegeeks.com/​enterprise-java/​spring-batch-scheduler-example/​|Spring Batch Scheduler Example]] 
-  * [[http://​examples.javacodegeeks.com/​enterprise-java/​spring/​spring-batch-jobrepository-example/​|Spring Batch JobRepository Example]] 
-  * [[http://​examples.javacodegeeks.com/​core-java/​spring-batch-partitioning-example/​|Spring Batch Partitioning Example]] 
-  * [[http://​examples.javacodegeeks.com/​enterprise-java/​spring/​spring-batch-admin-tutorial/​|Spring Batch Admin Tutorial]] 
-  * [[http://​www.petrikainulainen.net/​programming/​spring-framework/​spring-batch-tutorial-introduction/​|petrikainulainen Spring Batch Tutorial - introduction]] 
-  * [[http://​www.baeldung.com/​spring-batch-partitioner|Spring Batch using Partitioner]] 
-  * [[https://​www.javacodegeeks.com/​2018/​05/​java-batch-tutorial.html|Java Batch Tutorial | Java Code Geeks - 2018]] 
-  * [[https://​examples.javacodegeeks.com/​enterprise-java/​java-batch-tutorial/​|Java Batch Tutorial | Examples Java Code Geeks - 2018]] 
-  * [[http://​opennote46.tistory.com/​76|Spring Batch - 작업실행]] 
-  * [[https://​grokonez.com/​spring-framework/​spring-batch/​use-spring-batch-late-binding-step-scope-job-scope|How to use Spring Batch Late Binding - Step Scope & Job Scope - grokonez]] 
-  * [[https://​grokonez.com/​spring-framework-tutorial/​spring-batch|Spring Batch - grokonez]] 
-  * [[https://​www.mkyong.com/​spring-batch/​spring-batch-example-mysql-database-to-xml/​|Spring Batch Example – MySQL Database To XML – Mkyong.com]] 
-  * [[https://​examples.javacodegeeks.com/​enterprise-java/​spring/​batch/​spring-batch-exception-handling-example/​|Spring Batch Exception Handling Example | Examples Java Code Geeks - 2018]] 
-  * [[http://​www.egovframe.go.kr/​wiki/​doku.php?​id=egovframework:​rte2:​brte:​batch_core:​parallel_process|egovframework:​rte2:​brte:​batch_core:​parallel_process [eGovFrame]]] 
- 
  
 ===== @EnableBatchProcessing ===== ===== @EnableBatchProcessing =====
줄 62: 줄 29:
   * ''​dataSource''​ 자체를 null로 지정하면 ''​MapJobRepository''​로 DB없이 작동하게 만들어진다.   * ''​dataSource''​ 자체를 null로 지정하면 ''​MapJobRepository''​로 DB없이 작동하게 만들어진다.
   * SpringBoot 에서 ''​DefaultBatchConfigurer''​ 사용시 TransactionManager 오작동 문제가 발생한다. [[springframework:​springboot:​batch|SpringBoot와 SpringBatch]] 참고   * SpringBoot 에서 ''​DefaultBatchConfigurer''​ 사용시 TransactionManager 오작동 문제가 발생한다. [[springframework:​springboot:​batch|SpringBoot와 SpringBatch]] 참고
 +
 ===== JobRepository ===== ===== JobRepository =====
   * ''​org.springframework.batch.core.repository.support.JobRepositoryFactoryBean''​로 ''​SimpleJobRepository''​ 생성   * ''​org.springframework.batch.core.repository.support.JobRepositoryFactoryBean''​로 ''​SimpleJobRepository''​ 생성
줄 76: 줄 44:
  
 ===== Transaction 설정 ===== ===== Transaction 설정 =====
-===== 트랜잭션 매니저를 지정하지 않으면 ​=====+==== 트랜잭션 매니저를 지정하지 않으면 ====
 TransactionManager를 지정하지 않으면 다음과 같은 오류가 발생한다. TransactionManager를 지정하지 않으면 다음과 같은 오류가 발생한다.
  
줄 109: 줄 77:
 } }
 </​code>​ </​code>​
 +
 +==== Chunk 사이즈가 크고 Transaction 이 긴데, 외부에 write 대상건을 알려주는 경우 DB Lock 발생할 수 있음 ====
 +  * batch 에 트랜잭션 매니저를 설정하고,​ writer 부분에서 데이터를 insert/​update 할 때마다 그 사실을 MQ 등으로 외부에 알려주면,​
 +  * 외부에서 그 데이터를 사용할 수 있게 하고자 했다면,
 +  * 절대로 Step 에 트랜잭션 매니저를 지정하지 말고, ''​ResourcelessTransactionManager''​ 를 사용하거나 CHUNK 를 작게 가져가야 한다.
 +  * 안그러면 CHUNK size 만큼의 처리가 모두 끝날때까지 DB lock 이 잡혀있어서 외부에서 이벤트를 받아서 처리하는 측에서 lock 획득에 실패해서 오류가 발생하게 된다.
  
 ===== JobInstanceAlreadyCompleteException:​ A job instance already exists and is complete for parameters 오류 발생 ===== ===== JobInstanceAlreadyCompleteException:​ A job instance already exists and is complete for parameters 오류 발생 =====
줄 170: 줄 144:
   * [[https://​dzone.com/​articles/​spring-batch-with-quartz|Run a Spring Batch Job With Quartz]]   * [[https://​dzone.com/​articles/​spring-batch-with-quartz|Run a Spring Batch Job With Quartz]]
   * [[https://​www.youtube.com/​watch?​v=CYTj5YT7CZU&​feature=youtu.be|Spring Batch (Michael Minella) - YouTube]]   * [[https://​www.youtube.com/​watch?​v=CYTj5YT7CZU&​feature=youtu.be|Spring Batch (Michael Minella) - YouTube]]
 +  * [[https://​www.baeldung.com/​spring-batch-skip-logic|Configuring Skip Logic in Spring Batch | Baeldung]]
 +  * [[http://​www.javaworld.com/​article/​2458888/​spring-framework/​open-source-java-projects-spring-batch.html|Open source Java projects: Spring Batch]] : SpringBatch 2.x의 기본 적인 Tasklet, chunk, reader/​writer/​processor,​ retry 등의 개념 들을 예제와 함께 설명하고 있음.
 +  * [[https://​www.javacodegeeks.com/​2015/​03/​spring-batch-tutorial.html|Spring Batch Tutorial – The ULTIMATE Guide]]
 +  * [[http://​www.mkyong.com/​tutorials/​spring-batch-tutorial/​|Spring Batch Tutorial]] : 매우 상세한 튜토리얼
 +  * [[https://​www.tutorialspoint.com/​spring_batch/​spring_batch_environment.htm|Spring Batch Environment]]
 +  * Spring Batch 2.2 JavaConfig
 +    * [[https://​blog.codecentric.de/​en/​2013/​06/​spring-batch-2-2-javaconfig-part-1-a-comparison-to-xml/​|Spring Batch 2.2 - JavaConfig Part 1: A comparison to XML]]
 +    * [[https://​blog.codecentric.de/​en/​2013/​06/​spring-batch-2-2-javaconfig-part-2-jobparameters-executioncontext-and-stepscope/​|Spring Batch 2.2 - JavaConfig Part 2: JobParameters,​ ExecutionContext and StepScope]]
 +    * [[https://​blog.codecentric.de/​en/​2013/​06/​spring-batch-2-2-javaconfig-part-3-profiles-and-environments/​|Spring Batch 2.2 - JavaConfig Part 3: Profiles and environments]]
 +    * [[https://​blog.codecentric.de/​en/​2013/​06/​spring-batch-2-2-javaconfig-part-4-job-inheritance/​|Spring Batch 2.2 - JavaConfig Part 4: Job inheritance]]
 +    * [[https://​blog.codecentric.de/​en/​2013/​06/​spring-batch-2-2-javaconfig-part-5-modular-configurations/​|Spring Batch 2.2 - JavaConfig Part 5: Modular configurations]]
 +    * [[https://​blog.codecentric.de/​en/​2013/​07/​spring-batch-2-2-javaconfig-part-6-partitioning-and-multi-threaded-step/​|Spring Batch 2.2 - JavaConfig Part 6: Partitioning and Multi-threaded Step]]
 +  * Spring Batch Transaction
 +    * [[https://​blog.codecentric.de/​en/​2012/​03/​transactions-in-spring-batch-part-1-the-basics/​|Transactions in Spring Batch - Part 1: The Basics]]
 +    * [[https://​blog.codecentric.de/​en/​2012/​03/​transactions-in-spring-batch-part-2-restart-cursor-based-reading-and-listeners/​|Transactions in Spring Batch - Part 2: Restart, cursor based reading and listeners]]
 +    * [[https://​blog.codecentric.de/​en/​2012/​03/​transactions-in-spring-batch-part-3-skip-and-retry/​|Transactions in Spring Batch - Part 3: Skip and retry]]
 +  * [[http://​spring.io/​blog/​2015/​02/​23/​springone2gx-replay-spring-batch-performance-tuning|SpringOne2GX Replay: Spring Batch Performance Tuning]]
 +  * [[http://​examples.javacodegeeks.com/​enterprise-java/​spring/​spring-batch-tasklet-example/​|Spring Batch Tasklet Example]]
 +  * [[http://​examples.javacodegeeks.com/​enterprise-java/​spring/​spring-batch-job-example/​|Spring Batch Job Example]]
 +  * [[http://​examples.javacodegeeks.com/​enterprise-java/​spring-batch-scheduler-example/​|Spring Batch Scheduler Example]]
 +  * [[http://​examples.javacodegeeks.com/​enterprise-java/​spring/​spring-batch-jobrepository-example/​|Spring Batch JobRepository Example]]
 +  * [[http://​examples.javacodegeeks.com/​core-java/​spring-batch-partitioning-example/​|Spring Batch Partitioning Example]]
 +  * [[http://​examples.javacodegeeks.com/​enterprise-java/​spring/​spring-batch-admin-tutorial/​|Spring Batch Admin Tutorial]]
 +  * [[http://​www.petrikainulainen.net/​programming/​spring-framework/​spring-batch-tutorial-introduction/​|petrikainulainen Spring Batch Tutorial - introduction]]
 +  * [[http://​www.baeldung.com/​spring-batch-partitioner|Spring Batch using Partitioner]]
 +  * [[https://​www.javacodegeeks.com/​2018/​05/​java-batch-tutorial.html|Java Batch Tutorial | Java Code Geeks - 2018]]
 +  * [[https://​examples.javacodegeeks.com/​enterprise-java/​java-batch-tutorial/​|Java Batch Tutorial | Examples Java Code Geeks - 2018]]
 +  * [[http://​opennote46.tistory.com/​76|Spring Batch - 작업실행]]
 +  * [[https://​grokonez.com/​spring-framework/​spring-batch/​use-spring-batch-late-binding-step-scope-job-scope|How to use Spring Batch Late Binding - Step Scope & Job Scope - grokonez]]
 +  * [[https://​grokonez.com/​spring-framework-tutorial/​spring-batch|Spring Batch - grokonez]]
 +  * [[https://​www.mkyong.com/​spring-batch/​spring-batch-example-mysql-database-to-xml/​|Spring Batch Example – MySQL Database To XML – Mkyong.com]]
 +  * [[https://​examples.javacodegeeks.com/​enterprise-java/​spring/​batch/​spring-batch-exception-handling-example/​|Spring Batch Exception Handling Example | Examples Java Code Geeks - 2018]]
 +  * [[http://​www.egovframe.go.kr/​wiki/​doku.php?​id=egovframework:​rte2:​brte:​batch_core:​parallel_process|egovframework:​rte2:​brte:​batch_core:​parallel_process [eGovFrame]]]
springframework/batch.1560906336.txt.gz · 마지막으로 수정됨: 2019/06/19 10:05 저자 kwon37xi