クラス Jackson2ObjectMapperFactoryBean
- 実装されているすべてのインターフェース:
Aware、BeanClassLoaderAware、FactoryBean<ObjectMapper>、InitializingBean、ApplicationContextAware
ObjectMapper(デフォルト)または XmlMapper(createXmlMapper プロパティを true に設定)を作成するための FactoryBean は、XML 構成内から Jackson 機能を有効または無効にします。Jackson のデフォルトプロパティを次のようにカスタマイズします。
MappingJackson2HttpMessageConverter の使用例:
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"
p:autoDetectFields="false"
p:autoDetectGettersSetters="false"
p:annotationIntrospector-ref="jaxbAnnotationIntrospector" />
</property>
</bean>MappingJackson2JsonView の使用例:
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
<property name="objectMapper">
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"
p:failOnEmptyBeans="false"
p:indentOutput="true">
<property name="serializers">
<array>
<bean class="org.mycompany.MyCustomSerializer" />
</array>
</property>
</bean>
</property>
</bean> 特定の setter が提供されていない場合(まれに使用されるオプションの場合)でも、より一般的な方法 setFeaturesToEnable(java.lang.Object...) および setFeaturesToDisable(java.lang.Object...) を使用できます。
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="featuresToEnable">
<array>
<util:constant static-field="com.fasterxml.jackson.databind.SerializationFeature.WRAP_ROOT_VALUE"/>
<util:constant static-field="com.fasterxml.jackson.databind.SerializationFeature.CLOSE_CLOSEABLE"/>
</array>
</property>
<property name="featuresToDisable">
<array>
<util:constant static-field="com.fasterxml.jackson.databind.MapperFeature.USE_ANNOTATIONS"/>
</array>
</property>
</bean>また、次の既知のモジュールがクラスパスで検出された場合、自動的に登録します。
- jackson-datatype-jdk7:
PathSE のような Java 7 型のサポート - jackson-datatype-jdk8:
OptionalSE のような他の Java 8 型のサポート - jackson-datatype-jsr310: Java 8 Date&Time API 型のサポート
- jackson-module-kotlin: Kotlin クラスとデータクラスのサポート
Jackson の ObjectMapper をカスタム Module で構成する場合は、setModulesToInstall(java.lang.Class<? extends com.fasterxml.jackson.databind.Module>...) を介してクラス名でこのようなモジュールを 1 つ以上登録できます。
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"> <property name="modulesToInstall" value="myapp.jackson.MySampleModule,myapp.jackson.MyOtherModule"/> </bean>
- 導入:
- 3.2
- 作成者:
- Dmitry Katsubo, Rossen Stoyanchev, Brian Clozel, Juergen Hoeller, Tadaya Tsuyukubo, Sebastien Deleuze
フィールドのサマリー
インターフェース org.springframework.beans.factory.FactoryBean から継承されたフィールド
OBJECT_TYPE_ATTRIBUTEコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明voidシングルトン ObjectMapper を返します。ClassSE<?>この FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合はnullを返します。booleanこのファクトリによって管理されるオブジェクトはシングルトンですか? つまり、FactoryBean.getObject()は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?voidsetAnnotationIntrospector(AnnotationIntrospector annotationIntrospector) シリアライゼーションとデシリアライゼーションの両方にAnnotationIntrospectorを設定します。voidsetApplicationContext(ApplicationContext applicationContext) Jackson ハンドラー(JsonSerializer、JsonDeserializer、KeyDeserializer、TypeResolverBuilder、TypeIdResolver)をオートワイヤーするために、ビルダーApplicationContextを設定します。voidsetAutoDetectFields(boolean autoDetectFields) MapperFeature.AUTO_DETECT_FIELDSオプションのショートカット。voidsetAutoDetectGetterSetter(boolean autoDetectGetterSetter) voidsetBeanClassLoader(ClassLoaderSE beanClassLoader) Beanclass loaderSE を Bean インスタンスに提供するコールバック。voidsetCreateXmlMapper(boolean createXmlMapper) true に設定し、カスタムObjectMapperが設定されていない場合、デフォルトのコンストラクターを使用してXmlMapperが作成されます。voidsetDateFormat(DateFormatSE dateFormat) 指定されたDateFormatSE で日付 / 時刻の形式を定義します。voidsetDefaultTyping(TypeResolverBuilder<?> typeResolverBuilder) Jackson のデフォルトの入力に使用するTypeResolverBuilderを指定します。voidsetDefaultUseWrapper(boolean defaultUseWrapper) ラッパーがインデックス付き(リスト、配列)プロパティに使用されるかどうかを定義します(既定では使用されません(XmlMapperのみに適用されます))。voidsetDefaultViewInclusion(boolean defaultViewInclusion) MapperFeature.DEFAULT_VIEW_INCLUSIONオプションのショートカット。voidsetDeserializers(JsonDeserializer<?>... deserializers) カスタムデシリアライザーを構成します。voidsetDeserializersByType(MapSE<ClassSE<?>, JsonDeserializer<?>> deserializers) 指定された型のカスタムデシリアライザーを構成します。voidsetFactory(JsonFactory factory) ObjectMapperインスタンスの作成に使用されるJsonFactoryを定義します。voidsetFailOnEmptyBeans(boolean failOnEmptyBeans) SerializationFeature.FAIL_ON_EMPTY_BEANSオプションのショートカット。voidsetFailOnUnknownProperties(boolean failOnUnknownProperties) DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIESオプションのショートカット。voidsetFeaturesToDisable(ObjectSE... featuresToDisable) 無効にする機能を指定します。voidsetFeaturesToEnable(ObjectSE... featuresToEnable) 有効にする機能を指定します。voidsetFilters(FilterProvider filters) @JsonFilterアノテーション付き POJO をサポートするために使用するグローバルフィルターを設定します。voidsetFindModulesViaServiceLoader(boolean findModules) クラスパス内の META-INF メタデータに基づいて、Jackson が JDK ServiceLoader を介して使用可能なモジュールを検索するかどうかを設定します。voidsetHandlerInstantiator(HandlerInstantiator handlerInstantiator) Jackson ハンドラー(JsonSerializer、JsonDeserializer、KeyDeserializer、TypeResolverBuilderおよびTypeIdResolver)の構成をカスタマイズします。voidsetIndentOutput(boolean indentOutput) SerializationFeature.INDENT_OUTPUTオプションのショートカット。voidフォーマットに使用するデフォルトのLocaleSE をオーバーライドします。void指定されたクラスまたはインターフェースを補強するために使用するミックスインアノテーションを追加します。voidsetModules(ListSE<Module> modules) ObjectMapperに登録するモジュールの完全なリストを設定します。final voidsetModulesToInstall(ClassSE<? extends Module>... modules) ObjectMapperに登録する 1 つ以上のモジュールをクラス(または XML のクラス名)で指定します。voidsetObjectMapper(ObjectMapper objectMapper) 使用するObjectMapperインスタンスを設定します。voidsetPropertyNamingStrategy(PropertyNamingStrategy propertyNamingStrategy) PropertyNamingStrategyを指定して、ObjectMapperを構成します。voidsetSerializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Include serializationInclusion) 直列化のカスタム包含戦略を設定します。voidsetSerializers(JsonSerializer<?>... serializers) カスタムシリアライザーを構成します。voidsetSerializersByType(MapSE<ClassSE<?>, JsonSerializer<?>> serializers) 指定された型のカスタムシリアライザーを構成します。voidsetSimpleDateFormat(StringSE format) SimpleDateFormatSE を使用して日付 / 時刻形式を定義します。voidsetTimeZone(TimeZoneSE timeZone) フォーマットに使用するデフォルトのTimeZoneSE をオーバーライドします。
コンストラクターの詳細
Jackson2ObjectMapperFactoryBean
public Jackson2ObjectMapperFactoryBean()
メソッドの詳細
setObjectMapper
使用するObjectMapperインスタンスを設定します。設定しない場合、ObjectMapperはデフォルトのコンストラクターを使用して作成されます。setCreateXmlMapper
public void setCreateXmlMapper(boolean createXmlMapper) true に設定し、カスタムObjectMapperが設定されていない場合、デフォルトのコンストラクターを使用してXmlMapperが作成されます。- 導入:
- 4.1
setFactory
ObjectMapperインスタンスの作成に使用されるJsonFactoryを定義します。- 導入:
- 5.0
setDateFormat
指定されたDateFormatSE で日付 / 時刻の形式を定義します。メモ: このプロパティを設定すると、Jackson のスレッドセーフルールに従って、公開された
ObjectMapperが非スレッドセーフになります。setSimpleDateFormat
SimpleDateFormatSE を使用して日付 / 時刻形式を定義します。メモ: このプロパティを設定すると、Jackson のスレッドセーフルールに従って、公開された
ObjectMapperが非スレッドセーフになります。setLocale
フォーマットに使用するデフォルトのLocaleSE をオーバーライドします。使用されるデフォルト値はLocale.getDefault()です。- 導入:
- 4.1.5
setTimeZone
フォーマットに使用するデフォルトのTimeZoneSE をオーバーライドします。使用されるデフォルト値は UTC です(ローカルタイムゾーンではありません)。- 導入:
- 4.1.5
setAnnotationIntrospector
シリアライゼーションとデシリアライゼーションの両方にAnnotationIntrospectorを設定します。setPropertyNamingStrategy
PropertyNamingStrategyを指定して、ObjectMapperを構成します。- 導入:
- 4.0.2
setDefaultTyping
Jackson のデフォルトの入力に使用するTypeResolverBuilderを指定します。- 導入:
- 4.2.2
setSerializationInclusion
public void setSerializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Include serializationInclusion) 直列化のカスタム包含戦略を設定します。- 関連事項:
JsonInclude.Include
setFilters
@JsonFilterアノテーション付き POJO をサポートするために使用するグローバルフィルターを設定します。setMixIns
指定されたクラスまたはインターフェースを補強するために使用するミックスインアノテーションを追加します。- パラメーター:
mixIns- アノテーションがキーとして効果的にオーバーライドされるターゲットクラス(またはインターフェース)と、アノテーションが値としてターゲットのアノテーションに「追加」されるミックスインクラス(またはインターフェース)を持つエントリのマップ。- 導入:
- 4.1.2
- 関連事項:
setSerializers
カスタムシリアライザーを構成します。各シリアライザーは、JsonSerializer.handledType()によって返される型用に登録されますが、nullであってはなりません。setSerializersByType
指定された型のカスタムシリアライザーを構成します。setDeserializers
カスタムデシリアライザーを構成します。各デシリアライザは、JsonDeserializer.handledType()によって返される型に対して登録されますが、nullであってはなりません。- 導入:
- 4.3
- 関連事項:
setDeserializersByType
指定された型のカスタムデシリアライザーを構成します。setAutoDetectFields
public void setAutoDetectFields(boolean autoDetectFields) MapperFeature.AUTO_DETECT_FIELDSオプションのショートカット。setAutoDetectGetterSetter
public void setAutoDetectGettersSetters(boolean autoDetectGettersSetters) setDefaultViewInclusion
public void setDefaultViewInclusion(boolean defaultViewInclusion) MapperFeature.DEFAULT_VIEW_INCLUSIONオプションのショートカット。- 導入:
- 4.1
setFailOnUnknownProperties
public void setFailOnUnknownProperties(boolean failOnUnknownProperties) DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIESオプションのショートカット。- 導入:
- 4.1.1
setFailOnEmptyBeans
public void setFailOnEmptyBeans(boolean failOnEmptyBeans) SerializationFeature.FAIL_ON_EMPTY_BEANSオプションのショートカット。setIndentOutput
public void setIndentOutput(boolean indentOutput) SerializationFeature.INDENT_OUTPUTオプションのショートカット。setDefaultUseWrapper
public void setDefaultUseWrapper(boolean defaultUseWrapper) ラッパーがインデックス付き(リスト、配列)プロパティに使用されるかどうかを定義します(既定では使用されません(XmlMapperのみに適用されます))。- 導入:
- 4.3
setFeaturesToEnable
有効にする機能を指定します。setFeaturesToDisable
無効にする機能を指定します。setModules
ObjectMapperに登録するモジュールの完全なリストを設定します。メモ: これが設定されている場合、モジュールの検出は行われません -Jackson でも Spring でもありません(
setFindModulesViaServiceLoader(boolean)を参照)。結果として、ここで空のリストを指定すると、あらゆる種類のモジュール検出が抑制されます。これまたは
setModulesToInstall(java.lang.Class<? extends com.fasterxml.jackson.databind.Module>...)の両方ではなく、いずれかを指定します。- 導入:
- 4.0
- 関連事項:
setModulesToInstall
ObjectMapperに登録する 1 つ以上のモジュールをクラス(または XML のクラス名)で指定します。ここで指定されたモジュールは、Spring による JSR-310 の自動検出、または Jackson によるモジュールの検出 (
setFindModulesViaServiceLoader(boolean)を参照) 後に登録され、最終的にその構成を上書きできるようになります。これまたは
setModules(java.util.List<com.fasterxml.jackson.databind.Module>)の両方ではなく、いずれかを指定します。- 導入:
- 4.0.1
- 関連事項:
setFindModulesViaServiceLoader
public void setFindModulesViaServiceLoader(boolean findModules) クラスパス内の META-INF メタデータに基づいて、Jackson が JDK ServiceLoader を介して使用可能なモジュールを検索するかどうかを設定します。このモードが設定されていない場合、Spring の Jackson2ObjectMapperFactoryBean 自体がクラスパス上で JSR-310 サポートモジュールを見つけようとします。
- 導入:
- 4.0.1
- 関連事項:
setBeanClassLoader
インターフェースからコピーされた説明:BeanClassLoaderAwareBeanclass loaderSE を Bean インスタンスに提供するコールバック。通常の Bean プロパティの設定後、ただし
InitializingBean'sInitializingBean.afterPropertiesSet()メソッドやカスタム init-method などの初期化コールバックの前に呼び出されます。- 次で指定:
- インターフェース
BeanClassLoaderAwareのsetBeanClassLoader - パラメーター:
beanClassLoader- 所有クラスローダー
setHandlerInstantiator
Jackson ハンドラー(JsonSerializer、JsonDeserializer、KeyDeserializer、TypeResolverBuilderおよびTypeIdResolver)の構成をカスタマイズします。- 導入:
- 4.1.3
- 関連事項:
setApplicationContext
Jackson ハンドラー(JsonSerializer、JsonDeserializer、KeyDeserializer、TypeResolverBuilder、TypeIdResolver)をオートワイヤーするために、ビルダーApplicationContextを設定します。- 次で指定:
- インターフェース
ApplicationContextAwareのsetApplicationContext - パラメーター:
applicationContext- このオブジェクトによって使用される ApplicationContext オブジェクト- 導入:
- 4.1.3
- 関連事項:
afterPropertiesSet
public void afterPropertiesSet()インターフェースからコピーされた説明:InitializingBeanすべての Bean プロパティを設定し、BeanFactoryAware、ApplicationContextAwareなどを満たした後、包含BeanFactoryによって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBeanのafterPropertiesSet
getObject
シングルトン ObjectMapper を返します。- 次で指定:
- インターフェース
FactoryBean<ObjectMapper>のgetObject - 戻り値:
- Bean のインスタンス (
nullにすることができます) - 関連事項:
getObjectType
インターフェースからコピーされた説明:FactoryBeanこの FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合はnullを返します。これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。
シングルトンオブジェクトを作成する実装の場合、このメソッドはシングルトンの作成を可能な限り回避し、事前に型を推定する必要があります。プロトタイプの場合は、ここで意味のある型を返すことも推奨されます。
このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。
注意 : オートワイヤーは、ここで
nullを返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。- 次で指定:
- インターフェース
FactoryBean<ObjectMapper>のgetObjectType - 戻り値:
- この FactoryBean が作成するオブジェクトの型、または呼び出し時に不明な場合は
null - 関連事項:
isSingleton
public boolean isSingleton()インターフェースからコピーされた説明:FactoryBeanこのファクトリによって管理されるオブジェクトはシングルトンですか? つまり、FactoryBean.getObject()は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?注意 : FactoryBean がシングルトンオブジェクトを保持していることを示している場合、
getObject()から返されたオブジェクトは、所有する BeanFactory によってキャッシュされる可能性があります。FactoryBean が常に同じ参照を公開しない限り、trueを返さないでください。FactoryBean 自体のシングルトンステータスは、通常、所有する BeanFactory によって提供されます。通常、そこではシングルトンとして定義する必要があります。
注意 :
falseを返すこのメソッドは、返されるオブジェクトが独立したインスタンスであることを必ずしも示しません。拡張SmartFactoryBeanインターフェースの実装は、SmartFactoryBean.isPrototype()メソッドを通じて独立したインスタンスを明示的に示す場合があります。この拡張インターフェースを実装しないプレーンなFactoryBean実装は、isSingleton()実装がfalseを返す場合、常に独立したインスタンスを返すと単純に想定されます。FactoryBeanは通常シングルトンインスタンスを管理するため、デフォルトの実装ではtrueが返されます。- 次で指定:
- インターフェース
FactoryBean<ObjectMapper>のisSingleton - 戻り値:
- 公開されたオブジェクトがシングルトンかどうか
- 関連事項: