apiJob부터 가져오는 정보가 null로 나오면서 찾을 수 없습니다.
430
작성한 질문수 2
fileJobConfiguration에서는 정상적으로 데이터가 product에 적재됩니다.
하지만 다음 apiJob을 통해 실행시키면
(--job.name=apiJob requestDate=20220121)
ApiStepConfiguration에서 itemReader 실행과정중에
AbstractStep에서 catch구문으로 접근하면서
아래와 같이 발생합니다.
api연동하기전에 먼저 발생한거여서 다음 강의를 쫓아갈수가 없네요 ㅠㅠ
진행상황 :
ProductVO[] productList = QueryGenerator.getProductList(dataSource);
를 통해 type 사이즈 3개는 정상적으로 가져옴.
itemReader에서 id, name, price는 모두 null이라서 그런건지...
강의에서는 저부분은 무시했던거 같아서요.
답변 2
1
네
오류 메시지를 보면 널포인터 예외가 발생했는데
@Bean
public ItemWriter itemWriter() {
ClassifierCompositeItemWriter<ApiRequestVO> writer
= new ClassifierCompositeItemWriter<>();
WriterClassifier<ApiRequestVO, ItemWriter<? super ApiRequestVO>> classifier
= new WriterClassifier();
// 인자로 만들어서 전달
Map<String, ItemWriter<ApiRequestVO>> writerMap = new HashMap<>();
writerMap.put("1", new ApiItemWriter1(apiService1));
writerMap.put("2", new ApiItemWriter2(apiService2));
writerMap.put("3", new ApiItemWriter3(apiService3));
classifier.setWriterMapMap(writerMap);
writer.setClassifier(classifier);
return writer;
}
위의 코드에서 WriterClassifier 에 wrtieMap 을 설정하고 있습니다.
classifier.setWriterMapMap(writerMap);
그런데 실제 WriterClassifier 안에 보시면
public class WriterClassifier<C, T> implements Classifier<C, T> {
private Map<String, ItemWriter<ApiRequestVO>> writerMap = new HashMap<>();
@Override
public T classify(C Classifiable) {
return (T)writerMap.get(((ApiRequestVO)Classifiable).getProductVO().getType()); // 1,2,3번 순으로 반환
}
public void setWriterMapMap(Map<String, ItemWriter<ApiRequestVO>> writerMapMap) {
this.writerMap = writerMap;
}
}
위의 코드에서
this.writerMap = writerMap;
로 되어 있는데 실제 파라미터 인자는 writerMapMap 로 되어 있어서 writeMap 에는 아무런 매핑 데이터가 존재하지 않게 됩니다.
setWriterMapMap(Map<String, ItemWriter<ApiRequestVO>> writerMapMap)
그렇기 때문에 writeMap 에서 ApiItemWriter 객체를 꺼내어 와야 하는데 아예 데이터가 존재하지 않기 때문에 writer 가 null 상태가 되어 NullPointerException 이 발생한 오류입니다.
itemReader에서 id, name, price 가 모두 null 인 것은 정상적인 로직이고 오류와는 상관이 없습니다.
오타로 인한 오류네요^^
스프링 배치 버전 질문
0
139
1
소스코드가 어디에 있나요?
0
122
2
트랜잭션 예외
0
101
1
질문이 있습니다.
0
138
2
ChunkListener 에서 beforeChunk 의 실행 시점 관련 질문
0
144
2
여러 JOB 설정하는법
0
158
2
강의 자료 다른 방법 있을까요?
0
163
1
JobExecution과 JobExecutionContext와의 관계
0
197
2
특정 job만 실행
1
267
1
Batch 성능 질문
0
158
1
ItemReaderAdapter 종료
0
87
1
[ 강좌 Git 브랜치 문의 ] 섹션 9 > JdbcCursorItemReader, JpaCursorItemReader
0
187
2
Spring Batch 배포 질문
0
253
2
spring batch 버전
0
238
2
retry count 관련 질문
0
183
2
StepExecutionListener 의 afterStep 에서 return ExitStatus.FAILED 에 의한 동작에 의문이 갑니다.
0
341
2
jdbc, jpa 커서방식 조회 방식 차이 질문 (강사님께 답변 받고 싶습니다)
0
242
2
Multithread step과 AsyncItemProcessor
0
208
2
job 재실행
0
259
2
bean 생명주기 문제 도와주세요(@Scope("step"), @Autowired)
0
191
1
Multi-threaded-step과 Partitioning 차이 확인
0
183
2
jdbcCursorReader, jdbcPagingReader 질문
0
149
1
step muti-thread 질문
0
114
1
itemSteam open update close 질문
0
117
1





