2009/01/06 17:27
Spring Batch 1.0에서 2.0으로 진화하기- 5. Configuration
2009/01/06 17:27 in Spring 지식 공유하기/Batch

이전 글에서도 살펴 봤듯이 Spring Batch 2.x에서는 커스텀 네임스페이스가 전격적으로(?) 적용됐습니다. 현재는 org/springframework/batch/core/configuration/xml/spring-batch-2.0.xsd 스키마가 등록되어 있습니다. 네임스페이스는 http://www.springframework.org/schema/batch/spring-batch-2.0.xsd 입니다.
구조를 간단히 살펴보면 아래와 같습니다.
커스텀 네임스페이스에 대한 예제나 레퍼런스가 아직은 공식적으로 나온게 없습니다. 2.0 정식 버전이 나오면서 공개하고자 하는 것 같습니다.
테스트 코드 중 유일하게 예제 코드가 하나 있습니다.
jobRepository에 대한 예제는 없내요.. Spring One 자료를 살펴보면 그 구성을 좀 더 예측해볼 수 있습니다.
커스텀 네이스페이스 등장으로 확실히 설정은 좀더 단순화 될것 같습니다. 설정 자체가 단순화 되는 점도 장점이긴 하지만, 보다 명확한 구성요소(element)를 사용함으로써 얻는 이득도 클것 같습니다.
또한 2.x에서는 XML 기반 설정에서 벗어나 최신 트렌드에 따라 Annotation 기반 설정도 지원하게 될 것 같습니다. 지원되는 애노테이션은 org.springframework.batch.core.annotation 패키지에 포함되어 있습니다.
프레임웍 내부에서는 지원되는 애노테이션들을 Enum(JobListenerMetaData, StepListenerMetaData)으로 등록해서 사용하도록 되어 있습니다. 설정 방법 자체와는 관련이 없지만, Enum을 사용하는 사례로 살펴보면 좋을듯 합니다. Enum의 클래스명을 살펴보면 알 수 있듯이, 지원되는 애노테이션은 현재로 리스너의 JoinPoint 정도입니다. @Job이나 @Step과 같은 배치 잡 구성 자체에 대한 애노테이션은 아직 지원되지 않고 있습니다. Job이나 Step 같은 경우 어차피 Spring Batch에서 제공하는 구현 클래스를 사용하거나 직접 구현하는 경우에도 인터페이스를 구현하거나 추상 클래스를 상속해야 하니 굳이 별도의 애노테이션을 지원할 필요는 없어서 그럴 수도 있을 것 같습니다. 기존 Spring 코어의 애노테이션(@Component)로 사용하면 되니까요.. 차후에는 추가될 수도 있겠지만, POJO 기반 Job이나 Step이 등장할 수 있는지는 아직 잘 모르겠습니다..
설정에 대한 개선 내용은 본격적으로 관련 레퍼런스나 자료가 갱신되면 더 자세히 살펴봐야할 것 같습니다.
구조를 간단히 살펴보면 아래와 같습니다.
커스텀 네임스페이스에 대한 예제나 레퍼런스가 아직은 공식적으로 나온게 없습니다. 2.0 정식 버전이 나오면서 공개하고자 하는 것 같습니다.
테스트 코드 중 유일하게 예제 코드가 하나 있습니다.
<job id="job">
<step name="step1">
<stop on="COMPLETED" to="decision"/>
</step>
<decision id="decision" decider="decider">
<next on="FOO" to="step2"/>
<end on="*" status="FAILED"/>
</decision>
<step name="step2" />
</job>
<step name="step1">
<stop on="COMPLETED" to="decision"/>
</step>
<decision id="decision" decider="decider">
<next on="FOO" to="step2"/>
<end on="*" status="FAILED"/>
</decision>
<step name="step2" />
</job>
jobRepository에 대한 예제는 없내요.. Spring One 자료를 살펴보면 그 구성을 좀 더 예측해볼 수 있습니다.
// Tasklet 등록
<job id="job>
<step name="step1">
<simple-task tasklet="tasklet" />
</step>
</job>
// JobRepository 구성
<job-repository id="jobRepo1" />
// 복잡한 Step 구성
<job id="job>
<step name="step1">
<simple-task tasklet="tasklet" />
</step>
</job>
// JobRepository 구성
<job-repository id="jobRepo1" />
// 복잡한 Step 구성
커스텀 네이스페이스 등장으로 확실히 설정은 좀더 단순화 될것 같습니다. 설정 자체가 단순화 되는 점도 장점이긴 하지만, 보다 명확한 구성요소(element)를 사용함으로써 얻는 이득도 클것 같습니다.
또한 2.x에서는 XML 기반 설정에서 벗어나 최신 트렌드에 따라 Annotation 기반 설정도 지원하게 될 것 같습니다. 지원되는 애노테이션은 org.springframework.batch.core.annotation 패키지에 포함되어 있습니다.
프레임웍 내부에서는 지원되는 애노테이션들을 Enum(JobListenerMetaData, StepListenerMetaData)으로 등록해서 사용하도록 되어 있습니다. 설정 방법 자체와는 관련이 없지만, Enum을 사용하는 사례로 살펴보면 좋을듯 합니다. Enum의 클래스명을 살펴보면 알 수 있듯이, 지원되는 애노테이션은 현재로 리스너의 JoinPoint 정도입니다. @Job이나 @Step과 같은 배치 잡 구성 자체에 대한 애노테이션은 아직 지원되지 않고 있습니다. Job이나 Step 같은 경우 어차피 Spring Batch에서 제공하는 구현 클래스를 사용하거나 직접 구현하는 경우에도 인터페이스를 구현하거나 추상 클래스를 상속해야 하니 굳이 별도의 애노테이션을 지원할 필요는 없어서 그럴 수도 있을 것 같습니다. 기존 Spring 코어의 애노테이션(@Component)로 사용하면 되니까요.. 차후에는 추가될 수도 있겠지만, POJO 기반 Job이나 Step이 등장할 수 있는지는 아직 잘 모르겠습니다..
설정에 대한 개선 내용은 본격적으로 관련 레퍼런스나 자료가 갱신되면 더 자세히 살펴봐야할 것 같습니다.
Prev
Rss Feed


