クラス BeanWrapperFieldSetMapper<T>

java.lang.ObjectSE
org.springframework.batch.support.DefaultPropertyEditorRegistrar
org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper<T>
実装されたすべてのインターフェース:
FieldSetMapper<T>org.springframework.beans.factory.Awareorg.springframework.beans.factory.BeanFactoryAwareorg.springframework.beans.factory.InitializingBeanorg.springframework.beans.PropertyEditorRegistrar

public class BeanWrapperFieldSetMapper<T> extends DefaultPropertyEditorRegistrar implements FieldSetMapper<T>, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.InitializingBean
Bean プロパティパスに基づく FieldSetMapper 実装。マップされる FieldSet には、目的の型のインスタンスの Bean プロパティパスに対応するフィールド名メタデータが必要です。インスタンスは、囲んでいる BeanFactory 内の Bean 名によってプロトタイプオブジェクトを参照するか、反射的にインスタンス化するクラスを提供することによって、作成および初期化されます。

マップおよびコレクション内のインデックス付きプロパティを含む、ネストされたプロパティパスは、FieldSet 名で参照できます。これらは、プロトタイプ内でネストされた Bean プロパティに変換されます。FieldSet とプロトタイプは、使用可能なフィールドと初期化可能なフィールドによって緊密に結合されています。ネストされたプロパティの一部がオプションの場合 (コレクションメンバーなど)、ポストプロセッサーで削除する必要があります。

FieldSet 値をプロトタイプに挿入する目的の型に変換する方法をカスタマイズするには、いくつかの選択肢があります。customEditors プロパティを介して PropertyEditorSE インスタンスを直接注入するか、createBinder(Object) および initBinder(DataBinder) メソッドをオーバーライドするか、カスタム FieldSet 実装を提供することができます。ConversionService を使用して、conversionService プロパティを介して目的の型に変換することもできます。

プロパティ名の一致は、一致が一意である限り、近い一致を許容するという意味で「あいまい」です。例:
  • 数量 = 数量 (フィールド名は大文字にすることができます)
  • ISIN = isin (Java Beans の推奨事項に従って、頭字語は小文字の Bean プロパティ名にすることができます。)
  • DuckPate = duckPate (キャメルケースを含む大文字)
  • アイテム ID = itemId (大文字と単語の境界をアンダースコアに置き換える)
  • ORDER.CUSTOMER_ID = order.customerId (ネストされたパスは再帰的にチェックされます)
プロパティ名を照合するために使用されるアルゴリズムは、完全一致から始めて、正確に 1 つの一致が見つかるまで、より遠い一致を続けて検索することです。複数の一致が見つかった場合、エラーが発生します。
作成者:
Dave Syer, Mahmoud Ben Hassine
  • コンストラクターのサマリー

    コンストラクター
    コンストラクター
    説明
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    型またはプロトタイプの Bean 名が正確に指定されていることを確認してください。
    protected org.springframework.validation.DataBinder
    ターゲットオブジェクトのバインダーを作成します。
    protected void
    initBinder(org.springframework.validation.DataBinder binder)
    新しいバインダーインスタンスを初期化します。
    含まれている Spring コンテキストから取得したオブジェクトに FieldSet をマップするか、プロトタイプが利用できない場合は、必要な型の新しいインスタンスにマップします。
    void
    setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
    void
    setConversionService(org.springframework.core.convert.ConversionService conversionService)
    'conversionService' プロパティのパブリック setter。
    void
    setCustomEditors(MapSE<?,? extends PropertyEditorSE> customEditors)
    登録する custom editorsSE を指定します。
    void
    setDistanceLimit(int distanceLimit)
    入力キー名と Bean プロパティ名の間のスペルで許容できる最大の違い。
    void
    mapFieldSet(FieldSet) に渡されるフィールドセットから入力できるオブジェクトの Bean 名(ID)。
    void
    setStrict(boolean strict)
    'strict' プロパティのパブリック setter。
    void
    setTargetType(ClassSE<? extends T> type)
    プロトタイプ Bean を使用する代わりに作成する Bean の型のパブリック setter。

    クラス org.springframework.batch.support.DefaultPropertyEditorRegistrar から継承されたメソッド

    registerCustomEditors

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • コンストラクターの詳細

    • BeanWrapperFieldSetMapper

      public BeanWrapperFieldSetMapper()
  • メソッドの詳細

    • setBeanFactory

      public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
      次で指定:
      インターフェース org.springframework.beans.factory.BeanFactoryAwaresetBeanFactory 
    • setDistanceLimit

      public void setDistanceLimit(int distanceLimit)
      入力キー名と Bean プロパティ名の間のスペルで許容できる最大の違い。デフォルトは 5 ですが、フィールド名が Bean 名と一致する場合は低く設定できます。
      パラメーター:
      distanceLimit - 設定する距離制限
    • setPrototypeBeanName

      public void setPrototypeBeanName(StringSE name)
      mapFieldSet(FieldSet) に渡されるフィールドセットから設定できるオブジェクトの Bean 名 (ID)。通常、プロトタイプは Bean をスコープとするため、マッピングされたフィールドセットごとに新しいインスタンスが返されます。

      このプロパティまたは type プロパティのいずれかを指定する必要がありますが、両方を指定することはできません。

      パラメーター:
      name - 囲む BeanFactory 内のプロトタイプ Bean の名前
    • setTargetType

      public void setTargetType(ClassSE<? extends T> type)
      プロトタイプ Bean を使用する代わりに作成する Bean の型のパブリック setter。この型のオブジェクトは、mapFieldSet(FieldSet) を呼び出すたびにデフォルトのコンストラクターから作成されます。
      このプロパティまたはプロトタイプ Bean 名のいずれかを指定する必要がありますが、両方を指定することはできません。
      パラメーター:
      type - 設定する型
    • afterPropertiesSet

      public void afterPropertiesSet() throws ExceptionSE
      型またはプロトタイプの Bean 名が正確に指定されていることを確認してください。
      次で指定:
      インターフェース org.springframework.beans.factory.InitializingBeanafterPropertiesSet 
      例外:
      IllegalStateExceptionSE - どちらも設定されていないか、両方のプロパティが設定されている場合。
      ExceptionSE
      関連事項:
      • InitializingBean.afterPropertiesSet()
    • mapFieldSet

      public T mapFieldSet(FieldSet fs) throws org.springframework.validation.BindException
      含まれている Spring コンテキストから取得したオブジェクトに FieldSet をマップするか、プロトタイプが利用できない場合は、必要な型の新しいインスタンスにマップします。
      次で指定:
      インターフェース FieldSetMapper<T>mapFieldSet 
      パラメーター:
      fs - マッピングする FieldSet
      戻り値:
      移入されたオブジェクト
      例外:
      org.springframework.validation.BindException - 型変換またはその他のエラーがある場合(createBinder(Object) の DataBinder にバインド後にエラーがある場合)。
      org.springframework.beans.NotWritablePropertyException - FieldSet に Bean プロパティにマップできないフィールドが含まれている場合。
      関連事項:
    • createBinder

      protected org.springframework.validation.DataBinder createBinder(ObjectSE target)
      ターゲットオブジェクトのバインダーを作成します。次に、バインダーを使用して、プロパティをフィールドセットからターゲットオブジェクトにバインドします。この実装は、新しい DataBinder を作成し、initBinder(DataBinder) および DefaultPropertyEditorRegistrar.registerCustomEditors(PropertyEditorRegistry) を呼び出します。
      パラメーター:
      target - バインドするオブジェクト
      戻り値:
      プロパティをターゲットにバインドするために使用できる DataBinder
    • initBinder

      protected void initBinder(org.springframework.validation.DataBinder binder)
      新しいバインダーインスタンスを初期化します。このフックにより、direct field access などのバインダー設定をカスタマイズできます。createBinder(Object) によって呼び出されます。

      カスタムプロパティエディターの登録は DefaultPropertyEditorRegistrar.registerCustomEditors(PropertyEditorRegistry) で実行できることに注意してください。

      パラメーター:
      binder - 新しいバインダーインスタンス
      関連事項:
    • setStrict

      public void setStrict(boolean strict)
      'strict' プロパティのパブリック setter。true の場合、mapFieldSet(FieldSet) は失敗します。FieldSet には、Bean にマップできないフィールドが含まれています。
      パラメーター:
      strict - インジケータ
    • setConversionService

      public void setConversionService(org.springframework.core.convert.ConversionService conversionService)
      'conversionService' プロパティのパブリック setter。createBinder(Object) は null でない場合はこれを使用します。
      パラメーター:
      conversionService - 型変換に使用される ConversionService 
    • setCustomEditors

      public void setCustomEditors(MapSE<?,? extends PropertyEditorSE> customEditors)
      登録する custom editorsSE を指定します。
      オーバーライド:
      クラス DefaultPropertyEditorRegistrarsetCustomEditors 
      パラメーター:
      customEditors - クラスの PropertyEditor へのマップ(またはクラス名から PropertyEditor へ)。
      関連事項:
      • CustomEditorConfigurer.setCustomEditors(Map)