[SPRING] Spring 배치의 다중 항목 작성기
SPRINGSpring 배치의 다중 항목 작성기
저는 현재 스프링 뭉치를 작성 중입니다. 여기에서 데이터 덩어리를 읽고 처리하며이 데이터를 2 명의 작성자에게 전달하려고합니다. 한 작가는 단순히 데이터베이스를 업데이트하는 반면 두 번째 작가는 csv 파일에 글을 쓸 것입니다.
나 자신의 사용자 정의 작성기를 작성하고 customItemWriter에 두 itemWriter를 삽입하고 customItemWriter의 write 메서드에서 두 항목 작성기의 쓰기 메서드를 호출 할 계획입니다. 이 접근법이 맞습니까? 요구 사항을 충족하는 ItemWriter 구현이 있습니까?
미리 감사드립니다.
해결법
-
==============================
1.Spring의 CompositeItemWriter를 사용하여 모든 작성자에게 위임 할 수 있습니다. 다음은 구성 예입니다.
Spring의 CompositeItemWriter를 사용하여 모든 작성자에게 위임 할 수 있습니다. 다음은 구성 예입니다.
-
==============================
2.예제처럼 반드시 xml을 사용할 필요는 없습니다. 나머지 코드에서 주석을 사용하는 경우 다음을 수행하면됩니다.
예제처럼 반드시 xml을 사용할 필요는 없습니다. 나머지 코드에서 주석을 사용하는 경우 다음을 수행하면됩니다.
public ItemWriter<T> writerOne(){ ItemWriter<T> writer = new ItemWriter<T>(); //your logic here return writer; } public ItemWriter<T> writerTwo(){ ItemWriter<T> writer = new ItemWriter<T>(); //your logic here return writer; } public CompositeItemWriter<T> compositeItemWriter(){ CompositeItemWriter writer = new CompositeItemWriter(); writer.setDelegates(Arrays.asList(writerOne(),writerTwo())); return writer; }
-
==============================
3.당신이 옳았. SB는 위임을 기반으로하므로 CompositeItemWriter를 사용하는 것이 사용자의 요구에 적합한 선택입니다.
당신이 옳았. SB는 위임을 기반으로하므로 CompositeItemWriter를 사용하는 것이 사용자의 요구에 적합한 선택입니다.
-
==============================
4.필요에 따라 Writer 클래스를 확장하고 여기에 기능을 추가 할 수도 있습니다. 예를 들어, 나는 HibernateItemWriter를 확장하고 write (List items)를 오버라이드 (override) 할 프로젝트를 가지고있다. 그런 다음 필자가 작성한 객체를 내 sessionFactory와 함께 작성자의 doWrite 메소드에 보냅니다. doWrite (sessionFactory, filteredRecords).
필요에 따라 Writer 클래스를 확장하고 여기에 기능을 추가 할 수도 있습니다. 예를 들어, 나는 HibernateItemWriter를 확장하고 write (List items)를 오버라이드 (override) 할 프로젝트를 가지고있다. 그런 다음 필자가 작성한 객체를 내 sessionFactory와 함께 작성자의 doWrite 메소드에 보냅니다. doWrite (sessionFactory, filteredRecords).
그래서 위 예제에서 확장 클래스의 csv 파일에 쓸 수 있었고 HibernateItemWriter는 데이터베이스에 쓸 것입니다. 분명히이 예제에서는 이상적이지 않을 수도 있지만 특정 시나리오에서는 좋은 옵션입니다.
-
==============================
5.Java 구성 방법 SpringBatch4
Java 구성 방법 SpringBatch4
@Bean public Step step1() { return this.stepBuilderFactory.get("step1") .<String, String>chunk(2) .reader(itemReader()) .writer(compositeItemWriter()) .stream(fileItemWriter1()) .stream(fileItemWriter2()) .build(); } /** * In Spring Batch 4, the CompositeItemWriter implements ItemStream so this isn't * necessary, but used for an example. */ @Bean public CompositeItemWriter compositeItemWriter() { List<ItemWriter> writers = new ArrayList<>(2); writers.add(fileItemWriter1()); writers.add(fileItemWriter2()); CompositeItemWriter itemWriter = new CompositeItemWriter(); itemWriter.setDelegates(writers); return itemWriter; }
from https://stackoverflow.com/questions/18915688/multiple-itemwriters-in-spring-batch by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring : 클라이언트가 보낸 요청이 구문 상 올바르지 않습니다 (). (0) | 2019.02.02 |
---|---|
[SPRING] 스프링 및 인터페이스 (0) | 2019.02.02 |
[SPRING] 스프링 프로토 타입 범위 - 사용 사례? (0) | 2019.02.02 |
[SPRING] 스프링 부트에서 기본 활성 프로파일 설정하기 (0) | 2019.02.02 |
[SPRING] Spring MVC 3 Validation - 기본 공급자를 찾을 수 없음 (0) | 2019.02.02 |