2016-08-10 18 views
0
@Configuration 
@EnableBatchProcessing(modular=true) 
public class ModularJobConfiguration { 

    @Bean 
    public ApplicationContextFactory job() { 
     return new GenericApplicationContextFactory(FlatfileToDbJobConfiguration.class); 
    } 

    @Bean 
    public ApplicationContextFactory anotherJob() { 
     return new GenericApplicationContextFactory(FlatfileToDbJobAnotherConfiguration.class); 
    } 

} 

たとえば、1つの設定のみを表示します。Springバッチ(modular = true)は、ジョブ設定beanを2回作成します。

@Configuration 
public class FlatfileToDbJobConfiguration { 

     @Autowired 
     private JobBuilderFactory jobBuilders; 

     @Autowired 
     private StepBuilderFactory stepBuilders; 

     @Bean 
     public Job flatfileToDbJob(){ 
      return jobBuilders.get("flatfileToDbJob") 
        .listener(protocolListener()) 
        .start(step()) 
        .build(); 
     } 

     @Bean 
     public Step step(){ 
      return stepBuilders.get("step") 
        .<Partner,Partner>chunk(1) 
        .reader(reader()) 
        .processor(processor()) 
        .writer(writer()) 
        .build(); 
     } 

     // ... 
     // rest part of code 
     // ... 
} 

すべてが正常に動作しますが、設定ファイルのすべてのBeanメソッドは2回呼び出します。私は共通の文脈で第一に、第二に個人で考える。それは普通ですか?私は2回呼び出すので、post構造を使うことはできません。どのようにmodular = trueと1つのBeanの初期化しか持たないのですか?ありがとう!

答えて

0

私は答えを見つけます。 @Lazyの初期化が必要です。次に、configが初期化して、個々のコンテキストが作成されます。

@Configuration 
@Lazy 
public class FlatfileToDbJobConfiguration { 

     @Autowired 
     private JobBuilderFactory jobBuilders; 

     @Autowired 
     private StepBuilderFactory stepBuilders; 

     @Bean 
     public Job flatfileToDbJob(){ 
      return jobBuilders.get("flatfileToDbJob") 
        .listener(protocolListener()) 
        .start(step()) 
        .build(); 
     } 

     @Bean 
     public Step step(){ 
      return stepBuilders.get("step") 
        .<Partner,Partner>chunk(1) 
        .reader(reader()) 
        .processor(processor()) 
        .writer(writer()) 
        .build(); 
     } 

     // ... 
     // rest part of code 
     // ... 
} 
関連する問題