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..
앞서 설명한 Chunk 방식을 사용하지 않는 경우 Tasklet 방식의 Batch를 사용한다고 했었다. 두 방식 모두 많이 쓰이는데 장단이 있다. 생각나는대로 말해보면 Chunk 방식은 포맷이 딱 정해져 있어서 그에 맞게 코드를 작성해야 하지만 성능적으로 우수하고, Tasklet 방식은 정해진 형식이 없고 자유롭게 코드를 작성할수 있고 쉽지만 Spring Batch에서 제공하는 다양한 기능들을 활용하지는 못한다. Spring Batch에 대한 이해도가 낮거나 외부 연동작업이라던지 성능이 크게 중요하지 않은 배치 작업을 할때는 Tasklet 방식을 많이 사용하는데 이에 대해 알아보자. 그럼 tasklet 방식의 배치는 어떤게 구현을 해야 하는지 살펴보자. (xml config 로 진행한다.) 사용한 spr..
지난 글인 File to File 예제를 통해 어떤것이 Chunk 지향적인것인지 간단히 알수 있었다. Spring Batch Chunk Example (1) - File to File (with FlatFileItemReader, FlatFileItemWriter) 현재까지 진행한 대부분의 프로젝트는 복잡하기도 하고 상황에 맞지 않아(WebService, EAI 연동 등) Spring Batch에서 일반적으로 사용하고 있는 chunk 방식 대신에 tasklet을 이용하여 사용하였다. tasklet을 oingdaddy.tistory.com DB to DB는 File to File에서 기본적인것은 충분히 언급을 했으므로 바로 예제로 들어가겠다. context-batch-job-db2db.xml ... 생략 ..
현재까지 진행한 대부분의 프로젝트는 복잡하기도 하고 상황에 맞지 않아(WebService, EAI 연동 등) Spring Batch에서 일반적으로 사용하고 있는 chunk 방식 대신에 tasklet을 이용하여 사용하였다. tasklet을 이용한다면 하나의 자바 메소드 안에 내가 필요한 내용만을 쭉 기술해서 사용하면 되므로 Spring Batch에 대한 개념이 없어도 쉽게 접근이 가능하다. 하지만 Spring Batch에서 일반적으로 사용되고 또 권고하는 chunk 방식이 더욱 강력한 성능을 가지고 있기에 공부를 더 하고 이를 활용한 개발방식의 변화도 필요하다. 그래서 Spring Batch를 사용하며 이론적으로는 많이 들었던 개념인 chunk (file2file, file2db, db2file, db2d..
spring batch는 여러 회사가 제각기 만들던 batch framework을 통합시켰을만큼 잘 만들어진 batch framework이다. 많은 사람들이 사용을 하고 또 표준이 되었다는건 그만큼 강력한 기능과 누구나 쉽게 다룰수 있는 편의성 때문일것이다. 이런 spring batch를 사용하기 위해 어떤 일들을 해야 하는지 알아보자. 참고로 jdk11, spring batch 버전은 4.0.1.RELEASE을 사용을 했다. pom.xml org.springframework.batch spring-batch-core ${org.springframework.batch.version} org.springframework.batch spring-batch-infrastructure ${org.springfr..
전에 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..