Class Jackson2ObjectMapperFactoryBean
- All Implemented Interfaces:
- Aware,- BeanClassLoaderAware,- FactoryBean<ObjectMapper>,- InitializingBean,- ApplicationContextAware
FactoryBean for creating a Jackson 2.x ObjectMapper (default) or
 XmlMapper (createXmlMapper property set to true) with setters
 to enable or disable Jackson features from within XML configuration.
 It customizes Jackson defaults properties with the following ones:
- MapperFeature.DEFAULT_VIEW_INCLUSIONis disabled
- DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIESis disabled
Example usage with
 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>
 Example usage with 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>
 In case there are no specific setters provided (for some rarely used options),
 you can still use the more general methods  setFeaturesToEnable(java.lang.Object...) and
 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>
 It also automatically registers the following well-known modules if they are detected on the classpath:
- jackson-datatype-jdk7:
 support for Java 7 types like Path
- jackson-datatype-jdk8:
 support for other Java 8 types like Optional
- jackson-datatype-jsr310: support for Java 8 Date & Time API types
- jackson-module-kotlin: support for Kotlin classes and data classes
In case you want to configure Jackson's ObjectMapper with a custom Module,
 you can register one or more such Modules by class name via setModulesToInstall(java.lang.Class<? extends com.fasterxml.jackson.databind.Module>...):
 
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"> <property name="modulesToInstall" value="myapp.jackson.MySampleModule,myapp.jackson.MyOtherModule"/> </bean>
- Since:
- 3.2
- Author:
- Dmitry Katsubo, Rossen Stoyanchev, Brian Clozel, Juergen Hoeller, Tadaya Tsuyukubo, Sebastien Deleuze
- 
Field SummaryFields inherited from interface org.springframework.beans.factory.FactoryBeanOBJECT_TYPE_ATTRIBUTE
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidInvoked by the containingBeanFactoryafter it has set all bean properties and satisfiedBeanFactoryAware,ApplicationContextAwareetc.Return the singleton ObjectMapper.Class<?>Return the type of object that this FactoryBean creates, ornullif not known in advance.booleanIs the object managed by this factory a singleton? That is, willFactoryBean.getObject()always return the same object (a reference that can be cached)?voidsetAnnotationIntrospector(AnnotationIntrospector annotationIntrospector) Set anAnnotationIntrospectorfor both serialization and deserialization.voidsetApplicationContext(ApplicationContext applicationContext) Set the builderApplicationContextin order to autowire Jackson handlers (JsonSerializer,JsonDeserializer,KeyDeserializer,TypeResolverBuilderandTypeIdResolver).voidsetAutoDetectFields(boolean autoDetectFields) Shortcut forMapperFeature.AUTO_DETECT_FIELDSoption.voidsetAutoDetectGettersSetters(boolean autoDetectGettersSetters) voidsetBeanClassLoader(ClassLoader beanClassLoader) Callback that supplies the beanclass loaderto a bean instance.voidsetCreateXmlMapper(boolean createXmlMapper) If set to true and no customObjectMapperhas been set, aXmlMapperwill be created using its default constructor.voidsetDateFormat(DateFormat dateFormat) Define the format for date/time with the givenDateFormat.voidsetDefaultTyping(TypeResolverBuilder<?> typeResolverBuilder) Specify aTypeResolverBuilderto use for Jackson's default typing.voidsetDefaultUseWrapper(boolean defaultUseWrapper) Define if a wrapper will be used for indexed (List, array) properties or not by default (only applies toXmlMapper).voidsetDefaultViewInclusion(boolean defaultViewInclusion) Shortcut forMapperFeature.DEFAULT_VIEW_INCLUSIONoption.voidsetDeserializers(JsonDeserializer<?>... deserializers) Configure custom deserializers.voidsetDeserializersByType(Map<Class<?>, JsonDeserializer<?>> deserializers) Configure custom deserializers for the given types.voidsetFactory(JsonFactory factory) Define theJsonFactoryto be used to create theObjectMapperinstance.voidsetFailOnEmptyBeans(boolean failOnEmptyBeans) Shortcut forSerializationFeature.FAIL_ON_EMPTY_BEANSoption.voidsetFailOnUnknownProperties(boolean failOnUnknownProperties) Shortcut forDeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIESoption.voidsetFeaturesToDisable(Object... featuresToDisable) Specify features to disable.voidsetFeaturesToEnable(Object... featuresToEnable) Specify features to enable.voidsetFilters(FilterProvider filters) Set the global filters to use in order to support@JsonFilterannotated POJO.voidsetFindModulesViaServiceLoader(boolean findModules) Set whether to let Jackson find available modules via the JDK ServiceLoader, based on META-INF metadata in the classpath.voidsetHandlerInstantiator(HandlerInstantiator handlerInstantiator) Customize the construction of Jackson handlers (JsonSerializer,JsonDeserializer,KeyDeserializer,TypeResolverBuilderandTypeIdResolver).voidsetIndentOutput(boolean indentOutput) Shortcut forSerializationFeature.INDENT_OUTPUToption.voidOverride the defaultLocaleto use for formatting.voidAdd mix-in annotations to use for augmenting specified class or interface.voidsetModules(List<Module> modules) Set a complete list of modules to be registered with theObjectMapper.final voidsetModulesToInstall(Class<? extends Module>... modules) Specify one or more modules by class (or class name in XML) to be registered with theObjectMapper.voidsetObjectMapper(ObjectMapper objectMapper) Set theObjectMapperinstance to use.voidsetPropertyNamingStrategy(PropertyNamingStrategy propertyNamingStrategy) Specify aPropertyNamingStrategyto configure theObjectMapperwith.voidsetSerializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Include serializationInclusion) Set a custom inclusion strategy for serialization.voidsetSerializers(JsonSerializer<?>... serializers) Configure custom serializers.voidsetSerializersByType(Map<Class<?>, JsonSerializer<?>> serializers) Configure custom serializers for the given types.voidsetSimpleDateFormat(String format) Define the date/time format with aSimpleDateFormat.voidsetTimeZone(TimeZone timeZone) Override the defaultTimeZoneto use for formatting.
- 
Constructor Details- 
Jackson2ObjectMapperFactoryBeanpublic Jackson2ObjectMapperFactoryBean()
 
- 
- 
Method Details- 
setObjectMapperSet theObjectMapperinstance to use. If not set, theObjectMapperwill be created using its default constructor.
- 
setCreateXmlMapperpublic void setCreateXmlMapper(boolean createXmlMapper) If set to true and no customObjectMapperhas been set, aXmlMapperwill be created using its default constructor.- Since:
- 4.1
 
- 
setFactoryDefine theJsonFactoryto be used to create theObjectMapperinstance.- Since:
- 5.0
 
- 
setDateFormatDefine the format for date/time with the givenDateFormat.Note: Setting this property makes the exposed ObjectMappernon-thread-safe, according to Jackson's thread safety rules.- See Also:
 
- 
setSimpleDateFormatDefine the date/time format with aSimpleDateFormat.Note: Setting this property makes the exposed ObjectMappernon-thread-safe, according to Jackson's thread safety rules.- See Also:
 
- 
setLocaleOverride the defaultLocaleto use for formatting. Default value used isLocale.getDefault().- Since:
- 4.1.5
 
- 
setTimeZoneOverride the defaultTimeZoneto use for formatting. Default value used is UTC (NOT local timezone).- Since:
- 4.1.5
 
- 
setAnnotationIntrospectorSet anAnnotationIntrospectorfor both serialization and deserialization.
- 
setPropertyNamingStrategySpecify aPropertyNamingStrategyto configure theObjectMapperwith.- Since:
- 4.0.2
 
- 
setDefaultTypingSpecify aTypeResolverBuilderto use for Jackson's default typing.- Since:
- 4.2.2
 
- 
setSerializationInclusionpublic void setSerializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Include serializationInclusion) Set a custom inclusion strategy for serialization.- See Also:
- 
- JsonInclude.Include
 
 
- 
setFiltersSet the global filters to use in order to support@JsonFilterannotated POJO.- Since:
- 4.2
- See Also:
 
- 
setMixInsAdd mix-in annotations to use for augmenting specified class or interface.- Parameters:
- mixIns- a Map of entries with target classes (or interface) whose annotations to effectively override as key and mix-in classes (or interface) whose annotations are to be "added" to target's annotations as value.
- Since:
- 4.1.2
- See Also:
 
- 
setSerializersConfigure custom serializers. Each serializer is registered for the type returned byJsonSerializer.handledType(), which must not benull.- See Also:
 
- 
setSerializersByTypeConfigure custom serializers for the given types.- See Also:
 
- 
setDeserializersConfigure custom deserializers. Each deserializer is registered for the type returned byJsonDeserializer.handledType(), which must not benull.- Since:
- 4.3
- See Also:
 
- 
setDeserializersByTypeConfigure custom deserializers for the given types.
- 
setAutoDetectFieldspublic void setAutoDetectFields(boolean autoDetectFields) Shortcut forMapperFeature.AUTO_DETECT_FIELDSoption.
- 
setAutoDetectGettersSetterspublic void setAutoDetectGettersSetters(boolean autoDetectGettersSetters) 
- 
setDefaultViewInclusionpublic void setDefaultViewInclusion(boolean defaultViewInclusion) Shortcut forMapperFeature.DEFAULT_VIEW_INCLUSIONoption.- Since:
- 4.1
 
- 
setFailOnUnknownPropertiespublic void setFailOnUnknownProperties(boolean failOnUnknownProperties) Shortcut forDeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIESoption.- Since:
- 4.1.1
 
- 
setFailOnEmptyBeanspublic void setFailOnEmptyBeans(boolean failOnEmptyBeans) Shortcut forSerializationFeature.FAIL_ON_EMPTY_BEANSoption.
- 
setIndentOutputpublic void setIndentOutput(boolean indentOutput) Shortcut forSerializationFeature.INDENT_OUTPUToption.
- 
setDefaultUseWrapperpublic void setDefaultUseWrapper(boolean defaultUseWrapper) Define if a wrapper will be used for indexed (List, array) properties or not by default (only applies toXmlMapper).- Since:
- 4.3
 
- 
setFeaturesToEnableSpecify features to enable.
- 
setFeaturesToDisableSpecify features to disable.
- 
setModulesSet a complete list of modules to be registered with theObjectMapper.Note: If this is set, no finding of modules is going to happen - not by Jackson, and not by Spring either (see setFindModulesViaServiceLoader(boolean)). As a consequence, specifying an empty list here will suppress any kind of module detection.Specify either this or setModulesToInstall(java.lang.Class<? extends com.fasterxml.jackson.databind.Module>...), not both.- Since:
- 4.0
- See Also:
 
- 
setModulesToInstallSpecify one or more modules by class (or class name in XML) to be registered with theObjectMapper.Modules specified here will be registered after Spring's autodetection of JSR-310, or Jackson's finding of modules (see setFindModulesViaServiceLoader(boolean)), allowing to eventually override their configuration.Specify either this or setModules(java.util.List<com.fasterxml.jackson.databind.Module>), not both.- Since:
- 4.0.1
- See Also:
 
- 
setFindModulesViaServiceLoaderpublic void setFindModulesViaServiceLoader(boolean findModules) Set whether to let Jackson find available modules via the JDK ServiceLoader, based on META-INF metadata in the classpath.If this mode is not set, Spring's Jackson2ObjectMapperFactoryBean itself will try to find the JSR-310 support module on the classpath. - Since:
- 4.0.1
- See Also:
 
- 
setBeanClassLoaderDescription copied from interface:BeanClassLoaderAwareCallback that supplies the beanclass loaderto a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as InitializingBean'sInitializingBean.afterPropertiesSet()method or a custom init-method.- Specified by:
- setBeanClassLoaderin interface- BeanClassLoaderAware
- Parameters:
- beanClassLoader- the owning class loader
 
- 
setHandlerInstantiatorCustomize the construction of Jackson handlers (JsonSerializer,JsonDeserializer,KeyDeserializer,TypeResolverBuilderandTypeIdResolver).- Since:
- 4.1.3
- See Also:
 
- 
setApplicationContextSet the builderApplicationContextin order to autowire Jackson handlers (JsonSerializer,JsonDeserializer,KeyDeserializer,TypeResolverBuilderandTypeIdResolver).- Specified by:
- setApplicationContextin interface- ApplicationContextAware
- Parameters:
- applicationContext- the ApplicationContext object to be used by this object
- Since:
- 4.1.3
- See Also:
 
- 
afterPropertiesSetpublic void afterPropertiesSet()Description copied from interface:InitializingBeanInvoked by the containingBeanFactoryafter it has set all bean properties and satisfiedBeanFactoryAware,ApplicationContextAwareetc.This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set. - Specified by:
- afterPropertiesSetin interface- InitializingBean
 
- 
getObjectReturn the singleton ObjectMapper.- Specified by:
- getObjectin interface- FactoryBean<ObjectMapper>
- Returns:
- an instance of the bean (can be null)
- See Also:
 
- 
getObjectTypeDescription copied from interface:FactoryBeanReturn the type of object that this FactoryBean creates, ornullif not known in advance.This allows one to check for specific types of beans without instantiating objects, for example on autowiring. In the case of implementations that create a singleton object, this method should try to avoid singleton creation as far as possible; it should rather estimate the type in advance. For prototypes, returning a meaningful type here is advisable too. This method can be called before this FactoryBean has been fully initialized. It must not rely on state created during initialization; of course, it can still use such state if available. NOTE: Autowiring will simply ignore FactoryBeans that return nullhere. Therefore, it is highly recommended to implement this method properly, using the current state of the FactoryBean.- Specified by:
- getObjectTypein interface- FactoryBean<ObjectMapper>
- Returns:
- the type of object that this FactoryBean creates,
 or nullif not known at the time of the call
- See Also:
 
- 
isSingletonpublic boolean isSingleton()Description copied from interface:FactoryBeanIs the object managed by this factory a singleton? That is, willFactoryBean.getObject()always return the same object (a reference that can be cached)?NOTE: If a FactoryBean indicates that it holds a singleton object, the object returned from getObject()might get cached by the owning BeanFactory. Hence, do not returntrueunless the FactoryBean always exposes the same reference.The singleton status of the FactoryBean itself will generally be provided by the owning BeanFactory; usually, it has to be defined as singleton there. NOTE: This method returning falsedoes not necessarily indicate that returned objects are independent instances. An implementation of the extendedSmartFactoryBeaninterface may explicitly indicate independent instances through itsSmartFactoryBean.isPrototype()method. PlainFactoryBeanimplementations which do not implement this extended interface are simply assumed to always return independent instances if theisSingleton()implementation returnsfalse.The default implementation returns true, since aFactoryBeantypically manages a singleton instance.- Specified by:
- isSingletonin interface- FactoryBean<ObjectMapper>
- Returns:
- whether the exposed object is a singleton
- See Also:
 
 
-