0

私は春のバッチが初めてなので、ここで基本的なアドバイスを求めます。

春のジョブ/ステップの実行中に構成ファイルをメモリ(またはBean)にロードし、そのコンテンツを使用するための最良の方法は何ですか?

よくわかりませんが、Google検索に基づいて、ライターを必要としないのになぜライターを定義する必要があるのか​​ よくわからなくても、以下のシナリオを見つけました:

  1. step1 : 設定ファイルを読み込む (内容は = で区切られた 2 つのフィールドです)
  2. step2 : いくつかの Java コードを実行し、以前の構成ファイルを使用します

ステップ1の場合:

<bean id="inputFile" class="org.springframework.core.io.FileSystemResource" scope="step">
    <constructor-arg value="path_config_file"/>
</bean>

<bean id="readerConfigFile" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
    <property name="resource" ref="inputFile"/>
    <property name="lineMapper">
        <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
            <property name="lineTokenizer">
                <bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                    <property name="names" value="field,value"/>
                    <property name="delimiter" value="="/>
                </bean>
            </property>
            <property name="fieldSetMapper">
                <bean class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
                    <property name="prototypeBeanName" value="configProperties"/>
                </bean>
            </property>
        </bean>
    </property>
</bean>

<bean id="outputConfig" class="outputConfig"></bean>

<bean id="configProperties" class="configProperties" scope="prototype"/>

私の質問は次のとおりです。

  1. ファイルに収集された情報をどのように使用できますか? それらを Java Bean に入れる必要がありますか?
  2. この情報を異なるステップ間で渡したり、アプリケーションのライフサイクル全体で永続化するにはどうすればよいですか?
  3. 上記を達成するために itemProcessor を使用することをお勧めしますか?

どんなアドバイスでも大歓迎です

4

1 に答える 1

2

以下を使用してSpringコンテキストでプロパティファイルをロードするだけでよいと思うので、私はあなたの質問について少し混乱していますPropertiesFactoryBean:

    <bean id="config" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
      <property name="location">
        <value>file:path_config_file</value>
      </property>
    </bean>

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="propertiesArray">
        <list>
          <ref bean="config"/>
        </list>
      </property>
    </bean>

${} プレースホルダーを使用してプロパティ値を参照できます。しかし、この解決策は春バッチとは関係ありません。いらない!

ご質問について:

  1. spring-batch はインボックスマッピング戦略を提供するため、POJO を使用することは良い方法です (BeanWrapperFieldSetMapperあなたの場合)。
  2. ジョブで使用されるオブジェクトは、アプリケーション コンテキストではなく、ジョブ コンテキストでのみアクセスできます (これが が必要だと思う理由ですPropertiesFactoryBean)。
    ステップ間でオブジェクトを渡すには、Spring Batch のジョブの異なるステップ間でデータを共有するにはどうすればよいですか?
  3. ItemProcessorTから読み取っItemReader<T>たオブジェクトを、 によって書き込まれた型 S のオブジェクトに変換する必要がある場合は、 が要求されますItemWriter<S>。いいえ、必要ありませんItemProcessor

英語は私の母国語ではありません。

于 2013-09-06T10:01:55.073 に答える