SimpleLimitExceptionHandler()를 Bean으로 만들어야 하는 이유가 뭔가요?
306
작성한 질문수 1
Repeat강의에서 SimpleLimitExceptionHandler를 설명해주실 때(43:29),
setExceptionHandler()에 SimpleLimitExceptionHandler객체를 Bean으로 만들어서 넣어줘야 정상 동작을 한다고 설명을 해주셨는대요.
Bean이 아닌 일반 객체로 넣어서, Process가 호출 될 때마다 새롭게 객체가 생성이 된다고 하더라도 limit이 3으로 들어가는건 변함이 없을 것 같은데, limit 이 0이 되는 이유가 잘 이해가 안되네요.
답변 1
5
네
이 부분은 Bean 의 라이프 사이클에서 내부적인 처리가 별도로 진행이 되어야 하는 점이 차이가 있습니다.
SimpleLimitExceptionHandler 의 소스를 보면 아래와 같은 구문이 있습니다.
@Override
public void afterPropertiesSet() throws Exception {
if (limit <= 0) {
return;
}
Map<Class<? extends Throwable>, Integer> thresholds = new HashMap<>();
for (Class<? extends Throwable> type : exceptionClasses) {
thresholds.put(type, limit);
}
// do the fatalExceptionClasses last so they override the others
for (Class<? extends Throwable> type : fatalExceptionClasses) {
thresholds.put(type, 0);
}
delegate.setThresholds(thresholds);
}
즉 빈의 라이프 사이클 중에 afterPropertiesSet() 를 호출하게 되는데 여기서 예외가 발생할 경우 처리해야 하는 초기화 설정을 하게 됩니다.
이 처리가 되지 않으면 limit 값이 제대로 설정이 되지 않습니다.
그래서 SimpleLimitExceptionHandler 를 빈으로 정의해야만 afterPropertiesSet() 가 호출되기 때문에 그렇습니다.
일반 객체로 생성하면 빈이 아니기 때문에 afterPropertiesSet() 가 호출이 되지 않아서 limit 값이 0 으로 되어 버립니다.
내부적으로 처리하는 부분이라 참고 하시면 될 것 같습니다.
스프링 배치 버전 질문
0
139
1
소스코드가 어디에 있나요?
0
122
2
트랜잭션 예외
0
101
1
질문이 있습니다.
0
139
2
ChunkListener 에서 beforeChunk 의 실행 시점 관련 질문
0
145
2
여러 JOB 설정하는법
0
158
2
강의 자료 다른 방법 있을까요?
0
163
1
JobExecution과 JobExecutionContext와의 관계
0
197
2
특정 job만 실행
1
268
1
Batch 성능 질문
0
158
1
ItemReaderAdapter 종료
0
87
1
[ 강좌 Git 브랜치 문의 ] 섹션 9 > JdbcCursorItemReader, JpaCursorItemReader
0
188
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





