クラス BeanWrapperFieldSetMapper<T>
java.lang.ObjectSE
org.springframework.batch.support.DefaultPropertyEditorRegistrar
org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper<T>
- 実装されたすべてのインターフェース:
FieldSetMapper<T>
、org.springframework.beans.factory.Aware
、org.springframework.beans.factory.BeanFactoryAware
、org.springframework.beans.factory.InitializingBean
、org.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
プロパティを介して PropertyEditor
SE インスタンスを直接注入するか、createBinder(Object)
および initBinder(DataBinder)
メソッドをオーバーライドするか、カスタム FieldSet
実装を提供することができます。ConversionService
を使用して、conversionService
プロパティを介して目的の型に変換することもできます。プロパティ名の一致は、一致が一意である限り、近い一致を許容するという意味で「あいまい」です。例:
- 数量 = 数量 (フィールド名は大文字にすることができます)
- ISIN = isin (Java Beans の推奨事項に従って、頭字語は小文字の Bean プロパティ名にすることができます。)
- DuckPate = duckPate (キャメルケースを含む大文字)
- アイテム ID = itemId (大文字と単語の境界をアンダースコアに置き換える)
- ORDER.CUSTOMER_ID = order.customerId (ネストされたパスは再帰的にチェックされます)
- 作成者:
- Dave Syer, Mahmoud Ben Hassine
コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明void
型またはプロトタイプの Bean 名が正確に指定されていることを確認してください。protected org.springframework.validation.DataBinder
createBinder
(ObjectSE target) ターゲットオブジェクトのバインダーを作成します。protected void
initBinder
(org.springframework.validation.DataBinder binder) 新しいバインダーインスタンスを初期化します。mapFieldSet
(FieldSet fs) 含まれている 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 editors
SE を指定します。void
setDistanceLimit
(int distanceLimit) 入力キー名と Bean プロパティ名の間のスペルで許容できる最大の違い。void
setPrototypeBeanName
(StringSE name) 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
コンストラクターの詳細
BeanWrapperFieldSetMapper
public BeanWrapperFieldSetMapper()
メソッドの詳細
setBeanFactory
public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory) - 次で指定:
- インターフェース
org.springframework.beans.factory.BeanFactoryAware
のsetBeanFactory
setDistanceLimit
public void setDistanceLimit(int distanceLimit) 入力キー名と Bean プロパティ名の間のスペルで許容できる最大の違い。デフォルトは 5 ですが、フィールド名が Bean 名と一致する場合は低く設定できます。- パラメーター:
distanceLimit
- 設定する距離制限
setPrototypeBeanName
mapFieldSet(FieldSet)
に渡されるフィールドセットから設定できるオブジェクトの Bean 名 (ID)。通常、プロトタイプは Bean をスコープとするため、マッピングされたフィールドセットごとに新しいインスタンスが返されます。このプロパティまたは type プロパティのいずれかを指定する必要がありますが、両方を指定することはできません。
- パラメーター:
name
- 囲む BeanFactory 内のプロトタイプ Bean の名前
setTargetType
プロトタイプ Bean を使用する代わりに作成する Bean の型のパブリック setter。この型のオブジェクトは、mapFieldSet(FieldSet)
を呼び出すたびにデフォルトのコンストラクターから作成されます。
このプロパティまたはプロトタイプ Bean 名のいずれかを指定する必要がありますが、両方を指定することはできません。- パラメーター:
type
- 設定する型
afterPropertiesSet
型またはプロトタイプの Bean 名が正確に指定されていることを確認してください。- 次で指定:
- インターフェース
org.springframework.beans.factory.InitializingBean
のafterPropertiesSet
- 例外:
IllegalStateExceptionSE
- どちらも設定されていないか、両方のプロパティが設定されている場合。ExceptionSE
- 関連事項:
InitializingBean.afterPropertiesSet()
mapFieldSet
含まれている Spring コンテキストから取得したオブジェクトにFieldSet
をマップするか、プロトタイプが利用できない場合は、必要な型の新しいインスタンスにマップします。- 次で指定:
- インターフェース
FieldSetMapper<T>
のmapFieldSet
- パラメーター:
fs
- マッピングするFieldSet
- 戻り値:
- 移入されたオブジェクト
- 例外:
org.springframework.validation.BindException
- 型変換またはその他のエラーがある場合(createBinder(Object)
のDataBinder
にバインド後にエラーがある場合)。org.springframework.beans.NotWritablePropertyException
-FieldSet
に Bean プロパティにマップできないフィールドが含まれている場合。- 関連事項:
createBinder
ターゲットオブジェクトのバインダーを作成します。次に、バインダーを使用して、プロパティをフィールドセットからターゲットオブジェクトにバインドします。この実装は、新しい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
登録するcustom editors
SE を指定します。- オーバーライド:
- クラス
DefaultPropertyEditorRegistrar
のsetCustomEditors
- パラメーター:
customEditors
- クラスの PropertyEditor へのマップ(またはクラス名から PropertyEditor へ)。- 関連事項:
CustomEditorConfigurer.setCustomEditors(Map)