Spring Framework의 개발환경이 Springboot 기반으로 변함에 따라 Spring Batch의 개발방식도 이전과는 많이 달라졌다. 필자가 전에 쓴 Spring Batch에 관한 글은 Springboot 기반이 아니라서 Batch Job을 작성하면 maven build를 해서 jar로 결과물을 만들어내고 이것에 대한 실행파일을 script로 만들어서 그 script를 동작시켜 실행하곤 했다. 이런 불편함을 없애주고 설정도 간결하게 할 수 있는 Springboot 기반의 Batch가 나왔고 이제는 대세가 되었다. 따라서 이전에 작성했던 Spring Batch Chunk Example 도 Springboot 기반으로 동작시키기 위해 글을 써본다. Springboot기반이라 많은 부분이 달라졌는데..
A bean with that name has already been defined ~ 관련 오류 *************************** APPLICATION FAILED TO START *************************** Description: The bean 'sampleChunkJob', defined in class path resource [com/example/batchprocessing/SampleChunkJob.class], could not be registered. A bean with that name has already been defined in file [C:\sample-project\workspace-study\batch-processing\targ..
Spring Batch 환경을 구성할때 Job이 여러개 있고 이것을 실행시켰을때 어떤 결과가 나올까? 정답은 "모든 Batch Job이 실행이 된다. " 이다. 내가 만든 Job 중 특정 Job만 실행을 시키고 싶다면 어떻게 해야 할까? 간단히 해결할 수 있다. application.properties (or application.yml) spring.batch.job.names=${job.name:NONE} application.properties에 위와 같은 구문을 추가시켜주고 Boot Dashboard > 프로젝트 우클릭 > Open Config > Arguments tab > Program arguments 에서 다음을 넣어준다. --job.name=실행시키고 싶은 job 이렇게 넣어준 후에 De..
Jenkins를 사용하다보면 비슷한 성격의 Job들을 병렬로 처리하기를 원하는 경우가 있을수 있다. 이럴 경우는 pipeline 을 사용하여 간단하게 처리할 수 있다. pipeline이란 전용 DSL을 통해 코드로 빌드 과정을 나타내는것을 말한다. pipeline의 핵심은 JenkinsFile 이고 이 JenkinsFile을 작성하는 방법은 여러가지가 있지만 가장 간단한 Jenkins Job에서 직접 JenkinsFile을 작성하는 방법에 대해 알아보겠다. Pipeline Job 만들기 new Item > Pipeline 을 통해 Job을 생성한다. Pipeline Job (JenkinsFile) 작성하기 Pipeline Job이라 Pipeline을 사용할 수 있다. Pipeline script를 선택(..
현재까지 진행한 대부분의 프로젝트는 복잡하기도 하고 상황에 맞지 않아(WebService, EAI 연동 등) Spring Batch에서 일반적으로 사용하고 있는 chunk 방식 대신에 tasklet을 이용하여 사용하였다. tasklet을 이용한다면 하나의 자바 메소드 안에 내가 필요한 내용만을 쭉 기술해서 사용하면 되므로 Spring Batch에 대한 개념이 없어도 쉽게 접근이 가능하다. 하지만 Spring Batch에서 일반적으로 사용되고 또 권고하는 chunk 방식이 더욱 강력한 성능을 가지고 있기에 공부를 더 하고 이를 활용한 개발방식의 변화도 필요하다. 그래서 Spring Batch를 사용하며 이론적으로는 많이 들었던 개념인 chunk (file2file, file2db, db2file, db2d..
전에 spring 프로젝트를 springboot 프로젝트로 migration 하는 과정을 기술한 적이 있다. 마찬가지로 현재 Spring Batch로 구성된 batch 프로젝트를 springboot batch로 전환을 하려고 한다. 두 프로젝트 모두 maven 기반의 프로젝트이고 전반적인 구성에 대한 소개보다는 migration point 에 대해서만 집중적으로 기술하도록 하겠다. 프로젝트 feature 전의 web 프로젝트와 동일하게 parent 프로젝트가 존재하고 module로 web, batch, common 등의 프로젝트가 child로 존재를 하는 상황이다. 또한 jdk 11, spring version은 4.3.12, spring batch version은 4.0.1, springboot의 ve..