クラス 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 プロパティを介して PropertyEditorSE インスタンスを直接注入するか、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.DataBindercreateBinder(ObjectSE target) ターゲットオブジェクトのバインダーを作成します。protected voidinitBinder(org.springframework.validation.DataBinder binder) 新しいバインダーインスタンスを初期化します。mapFieldSet(FieldSet fs) 含まれている Spring コンテキストから取得したオブジェクトにFieldSetをマップするか、プロトタイプが利用できない場合は、必要な型の新しいインスタンスにマップします。voidsetBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory) voidsetConversionService(org.springframework.core.convert.ConversionService conversionService) 'conversionService' プロパティのパブリック setter。voidsetCustomEditors(MapSE<?, ? extends PropertyEditorSE> customEditors) 登録するcustom editorsSE を指定します。voidsetDistanceLimit(int distanceLimit) 入力キー名と Bean プロパティ名の間のスペルで許容できる最大の違い。voidsetPrototypeBeanName(StringSE name) mapFieldSet(FieldSet)に渡されるフィールドセットから入力できるオブジェクトの Bean 名(ID)。voidsetStrict(boolean strict) 'strict' プロパティのパブリック setter。voidsetTargetType(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インターフェース org.springframework.beans.PropertyEditorRegistrar から継承されたメソッド
overridesDefaultEditors
コンストラクターの詳細
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 editorsSE を指定します。- オーバーライド:
- クラス
DefaultPropertyEditorRegistrarのsetCustomEditors - パラメーター:
customEditors- クラスの PropertyEditor へのマップ(またはクラス名から PropertyEditor へ)。- 関連事項:
CustomEditorConfigurer.setCustomEditors(Map)