2017-01-22 9 views
1

내 JBeret 자바 배치 작업 한 단계에서 다음 단계로 매개 변수를 전달해야합니다. 지금까지 나는 단지 JobContext.setTransientUserData()를 통해이를 알아 냈습니다.Java-Batch : 한 단계에서 다른 단계로 데이터를 전달하는 방법은 무엇입니까?

내 질문은 : transientUserData 방식이 최선의 방법인가, 아니면 더 나은 대안이 있습니까? 배치 단계간에 매개 변수를 전달하는 것이 일반적입니까, 아니면 이와 관련하여 단계가 자급 자족해야합니까?

답변

2

예, 작업 컨텍스트 임시 사용자 데이터는 배치 사양 (JSR 352)에 정의 된대로 단계간에 응용 프로그램 데이터를 전달하기위한 표준 메커니즘입니다. 이 사용법은 이식성이 있으며 준수하는 모든 구현에서 작동합니다.

단계는 대부분 자체적으로 수행되지만 단계는 또한 작업 내에 있습니다. 따라서 한 단계에서 다른 단계의 응용 프로그램 데이터를 내보내거나 사용하여 작업 실행을 조정하는 것이 일반적입니다.

JBeret에서 CDI 빈을 @JobScoped으로 선언하고 공유 응용 프로그램 상태에 액세스하는 데 필요한 곳에 주입 할 수 있습니다.

예를 들어을 참조하십시오.

유사한 유래 토론 : How to put in custom scope/context (JobScoped - custom CDI scope) particular instance from request to make it injectable?

+0

이 답변을 주셔서 감사합니다! 배치 단계와 setTransientUserData()를 통해 값을 전달하는 것에 대해서도 같은 생각을했습니다. 나는 @JobScoped 어노테이션을 간과했다. 이것이 내가 할 방법이다. JobContext에서 transientUserData로 전달하는 것보다 빈을 주입하는 것이 더 깔끔하고 쉽습니다. 다른 토론에 대한 링크를 가져 주셔서 감사합니다. 수색했을 때 찾지 못했습니다. – uwl