クラス 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:
Path
SE のような Java 7 型のサポート - jackson-datatype-jdk8:
Optional
SE のような他の 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()
は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?void
setAnnotationIntrospector
(AnnotationIntrospector annotationIntrospector) シリアライゼーションとデシリアライゼーションの両方にAnnotationIntrospector
を設定します。void
setApplicationContext
(ApplicationContext applicationContext) Jackson ハンドラー(JsonSerializer
、JsonDeserializer
、KeyDeserializer
、TypeResolverBuilder
、TypeIdResolver
)をオートワイヤーするために、ビルダーApplicationContext
を設定します。void
setAutoDetectFields
(boolean autoDetectFields) MapperFeature.AUTO_DETECT_FIELDS
オプションのショートカット。void
setAutoDetectGetterSetter
(boolean autoDetectGetterSetter) void
setBeanClassLoader
(ClassLoaderSE beanClassLoader) Beanclass loader
SE を Bean インスタンスに提供するコールバック。void
setCreateXmlMapper
(boolean createXmlMapper) true に設定し、カスタムObjectMapper
が設定されていない場合、デフォルトのコンストラクターを使用してXmlMapper
が作成されます。void
setDateFormat
(DateFormatSE dateFormat) 指定されたDateFormat
SE で日付 / 時刻の形式を定義します。void
setDefaultTyping
(TypeResolverBuilder<?> typeResolverBuilder) Jackson のデフォルトの入力に使用するTypeResolverBuilder
を指定します。void
setDefaultUseWrapper
(boolean defaultUseWrapper) ラッパーがインデックス付き(リスト、配列)プロパティに使用されるかどうかを定義します(既定では使用されません(XmlMapper
のみに適用されます))。void
setDefaultViewInclusion
(boolean defaultViewInclusion) MapperFeature.DEFAULT_VIEW_INCLUSION
オプションのショートカット。void
setDeserializers
(JsonDeserializer<?>... deserializers) カスタムデシリアライザーを構成します。void
setDeserializersByType
(MapSE<ClassSE<?>, JsonDeserializer<?>> deserializers) 指定された型のカスタムデシリアライザーを構成します。void
setFactory
(JsonFactory factory) ObjectMapper
インスタンスの作成に使用されるJsonFactory
を定義します。void
setFailOnEmptyBeans
(boolean failOnEmptyBeans) SerializationFeature.FAIL_ON_EMPTY_BEANS
オプションのショートカット。void
setFailOnUnknownProperties
(boolean failOnUnknownProperties) DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES
オプションのショートカット。void
setFeaturesToDisable
(ObjectSE... featuresToDisable) 無効にする機能を指定します。void
setFeaturesToEnable
(ObjectSE... featuresToEnable) 有効にする機能を指定します。void
setFilters
(FilterProvider filters) @JsonFilter
アノテーション付き POJO をサポートするために使用するグローバルフィルターを設定します。void
setFindModulesViaServiceLoader
(boolean findModules) クラスパス内の META-INF メタデータに基づいて、Jackson が JDK ServiceLoader を介して使用可能なモジュールを検索するかどうかを設定します。void
setHandlerInstantiator
(HandlerInstantiator handlerInstantiator) Jackson ハンドラー(JsonSerializer
、JsonDeserializer
、KeyDeserializer
、TypeResolverBuilder
およびTypeIdResolver
)の構成をカスタマイズします。void
setIndentOutput
(boolean indentOutput) SerializationFeature.INDENT_OUTPUT
オプションのショートカット。void
フォーマットに使用するデフォルトのLocale
SE をオーバーライドします。void
指定されたクラスまたはインターフェースを補強するために使用するミックスインアノテーションを追加します。void
setModules
(ListSE<Module> modules) ObjectMapper
に登録するモジュールの完全なリストを設定します。final void
setModulesToInstall
(ClassSE<? extends Module>... modules) ObjectMapper
に登録する 1 つ以上のモジュールをクラス(または XML のクラス名)で指定します。void
setObjectMapper
(ObjectMapper objectMapper) 使用するObjectMapper
インスタンスを設定します。void
setPropertyNamingStrategy
(PropertyNamingStrategy propertyNamingStrategy) PropertyNamingStrategy
を指定して、ObjectMapper
を構成します。void
setSerializationInclusion
(com.fasterxml.jackson.annotation.JsonInclude.Include serializationInclusion) 直列化のカスタム包含戦略を設定します。void
setSerializers
(JsonSerializer<?>... serializers) カスタムシリアライザーを構成します。void
setSerializersByType
(MapSE<ClassSE<?>, JsonSerializer<?>> serializers) 指定された型のカスタムシリアライザーを構成します。void
setSimpleDateFormat
(StringSE format) SimpleDateFormat
SE を使用して日付 / 時刻形式を定義します。void
setTimeZone
(TimeZoneSE timeZone) フォーマットに使用するデフォルトのTimeZone
SE をオーバーライドします。
コンストラクターの詳細
Jackson2ObjectMapperFactoryBean
public Jackson2ObjectMapperFactoryBean()
メソッドの詳細
setObjectMapper
使用するObjectMapper
インスタンスを設定します。設定しない場合、ObjectMapper
はデフォルトのコンストラクターを使用して作成されます。setCreateXmlMapper
public void setCreateXmlMapper(boolean createXmlMapper) true に設定し、カスタムObjectMapper
が設定されていない場合、デフォルトのコンストラクターを使用してXmlMapper
が作成されます。- 導入:
- 4.1
setFactory
ObjectMapper
インスタンスの作成に使用されるJsonFactory
を定義します。- 導入:
- 5.0
setDateFormat
指定されたDateFormat
SE で日付 / 時刻の形式を定義します。メモ: このプロパティを設定すると、Jackson のスレッドセーフルールに従って、公開された
ObjectMapper
が非スレッドセーフになります。setSimpleDateFormat
SimpleDateFormat
SE を使用して日付 / 時刻形式を定義します。メモ: このプロパティを設定すると、Jackson のスレッドセーフルールに従って、公開された
ObjectMapper
が非スレッドセーフになります。setLocale
フォーマットに使用するデフォルトのLocale
SE をオーバーライドします。使用されるデフォルト値はLocale.getDefault()
です。- 導入:
- 4.1.5
setTimeZone
フォーマットに使用するデフォルトのTimeZone
SE をオーバーライドします。使用されるデフォルト値は 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
インターフェースからコピーされた説明:BeanClassLoaderAware
Beanclass loader
SE を Bean インスタンスに提供するコールバック。通常の Bean プロパティの設定後、ただし
InitializingBean's
InitializingBean.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
- 戻り値:
- 公開されたオブジェクトがシングルトンかどうか
- 関連事項: