2016-06-19 13 views
-2

私はSpringブートを使ってCSVファイルを読み書きしていますが、@Beanタグを理解することはできます。このタグを処理または書き込みに使用する理由例えばSpringブートの例を理解する

@Bean 
    public Step step1() { 
     return stepBuilderFactory.get("step1") 
       .<Person, Person> chunk(10) 
       .reader(reader()) 
       .processor(processor()) 
       .writer(writer()) 
       .build(); 
    } 

私はまた、我々はgetメソッド内step1を渡している理由は別の質問がありますか?

答えて

0

Bean注釈は、タイプStepのBeanを作成することです。jobにこのBeanを注入できます。

@Bean 
@Autowired 
public Job importUserJob(Step step) { // auto-wired the bean 
    return jobBuilderFactory.get("importUserJob") 
      .incrementer(new RunIdIncrementer()) 
      .listener(listener()) 
      .flow(step) // note this 
      .end() 
      .build(); 
} 

、あなたが直接、同じクラスにステップとジョブの例では

@Bean 
public Job importUserJob() { // no args 
    return jobBuilderFactory.get("importUserJob") 
      .incrementer(new RunIdIncrementer()) 
      .listener(listener()) 
      .flow(step1()) // directly calling the method 
      .end() 
      .build(); 
} 

ジョブにSTEP1メソッドを呼び出しているので、彼らは直接メソッドを呼び出した場合は豆の注釈が必要とされていませんしかし、彼らが両方とも異なるクラスにいる場合は、それらを豆として作り、必要なクラスに注入する必要があります。

step1は「あなたのメソッドがビーンあなたと注釈されている場合、工場stepBuilderFactory

UPDATE

から作成ステップ名は、Bean定義のリストを取得し、豆の注釈ととせずにアプリケーションを実行していますコンテキストからBeanを取得する

ApplicationContext context = SpringApplication.run(SpringBoot.class, args); 
    String[] beans = context.getBeanDefinitionNames(); 
    for (String bean : beans) { 
     System.out.println(bean); 
    } 
+0

まだ@Beanは明確ではありません。いくつかの例を挙げて詳細を教えてください。 –

+0

これはXMLの 'でBeanを定義するのと似ていますが、Beanタグでメソッドに注釈を付けるとBeanが作成され、私が掲示したコードを見てください、私は '@ Autowired'でジョブメソッドに注釈を付け、引数として'ステップステップ 'を渡すと、ステップビーンは自動配線されます – Saravana

関連する問題