Class JsonSerializer<T>
- java.lang.Object
- 
- org.springframework.kafka.support.serializer.JsonSerializer<T>
 
- 
- Type Parameters:
- T- class of the entity, representing messages
 - All Implemented Interfaces:
- java.io.Closeable,- java.lang.AutoCloseable,- org.apache.kafka.common.serialization.Serializer<T>
 
 public class JsonSerializer<T> extends java.lang.Object implements org.apache.kafka.common.serialization.Serializer<T>GenericSerializerfor sending Java objects to Kafka as JSON.- Author:
- Igor Stepanov, Artem Bilan, Gary Russell, Elliot Kennedy
 
- 
- 
Field SummaryFields Modifier and Type Field Description static java.lang.StringADD_TYPE_INFO_HEADERSKafka config property for disabling adding type headers.protected booleanaddTypeInfoprotected com.fasterxml.jackson.databind.ObjectMapperobjectMapperstatic java.lang.StringTYPE_MAPPINGSKafka config property to add type mappings to the type mapper: 'foo:com.Foo,bar:com.Bar'.protected Jackson2JavaTypeMappertypeMapper
 - 
Constructor SummaryConstructors Constructor Description JsonSerializer()JsonSerializer(com.fasterxml.jackson.core.type.TypeReference<? super T> targetType)JsonSerializer(com.fasterxml.jackson.core.type.TypeReference<? super T> targetType, com.fasterxml.jackson.databind.ObjectMapper objectMapper)JsonSerializer(com.fasterxml.jackson.databind.JavaType targetType, com.fasterxml.jackson.databind.ObjectMapper objectMapper)JsonSerializer(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
 - 
Method SummaryAll Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()voidconfigure(java.util.Map<java.lang.String,?> configs, boolean isKey)<X> JsonSerializer<X>copyWithType(com.fasterxml.jackson.core.type.TypeReference<? super X> newTargetType)Copies this serializer with same configuration, except new target type reference is used.<X> JsonSerializer<X>copyWithType(com.fasterxml.jackson.databind.JavaType newTargetType)Copies this serializer with same configuration, except new target java type is used.<X> JsonSerializer<X>copyWithType(java.lang.Class<? super X> newTargetType)Copies this serializer with same configuration, except new target type reference is used.protected static java.util.Map<java.lang.String,java.lang.Class<?>>createMappings(java.lang.String mappings)JsonSerializer<T>forKeys()Designate this serializer for serializing keys (default is values); only applies if the default type mapper is used.Jackson2JavaTypeMappergetTypeMapper()booleanisAddTypeInfo()JsonSerializer<T>noTypeInfo()Do not include type info headers.byte[]serialize(java.lang.String topic, org.apache.kafka.common.header.Headers headers, T data)byte[]serialize(java.lang.String topic, T data)voidsetAddTypeInfo(boolean addTypeInfo)Set to false to disable adding type info headers.voidsetTypeMapper(Jackson2JavaTypeMapper typeMapper)Set a customized type mapper.voidsetUseTypeMapperForKey(boolean isKey)Configure the default Jackson2JavaTypeMapper to use key type headers.JsonSerializer<T>typeMapper(Jackson2JavaTypeMapper mapper)Use the suppliedJackson2JavaTypeMapper.
 
- 
- 
- 
Field Detail- 
ADD_TYPE_INFO_HEADERSpublic static final java.lang.String ADD_TYPE_INFO_HEADERS Kafka config property for disabling adding type headers.- See Also:
- Constant Field Values
 
 - 
TYPE_MAPPINGSpublic static final java.lang.String TYPE_MAPPINGS Kafka config property to add type mappings to the type mapper: 'foo:com.Foo,bar:com.Bar'.- See Also:
- Constant Field Values
 
 - 
objectMapperprotected final com.fasterxml.jackson.databind.ObjectMapper objectMapper 
 - 
addTypeInfoprotected boolean addTypeInfo 
 - 
typeMapperprotected Jackson2JavaTypeMapper typeMapper 
 
- 
 - 
Constructor Detail- 
JsonSerializerpublic JsonSerializer() 
 - 
JsonSerializerpublic JsonSerializer(com.fasterxml.jackson.core.type.TypeReference<? super T> targetType) 
 - 
JsonSerializerpublic JsonSerializer(com.fasterxml.jackson.databind.ObjectMapper objectMapper) 
 - 
JsonSerializerpublic JsonSerializer(com.fasterxml.jackson.core.type.TypeReference<? super T> targetType, com.fasterxml.jackson.databind.ObjectMapper objectMapper) 
 - 
JsonSerializerpublic JsonSerializer(com.fasterxml.jackson.databind.JavaType targetType, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
 
- 
 - 
Method Detail- 
isAddTypeInfopublic boolean isAddTypeInfo() 
 - 
setAddTypeInfopublic void setAddTypeInfo(boolean addTypeInfo) Set to false to disable adding type info headers.- Parameters:
- addTypeInfo- true to add headers.
- Since:
- 2.1
 
 - 
getTypeMapperpublic Jackson2JavaTypeMapper getTypeMapper() 
 - 
setTypeMapperpublic void setTypeMapper(Jackson2JavaTypeMapper typeMapper) Set a customized type mapper.- Parameters:
- typeMapper- the type mapper.
- Since:
- 2.1
 
 - 
setUseTypeMapperForKeypublic void setUseTypeMapperForKey(boolean isKey) Configure the default Jackson2JavaTypeMapper to use key type headers.- Parameters:
- isKey- Use key type headers if true
- Since:
- 2.1.3
 
 - 
configurepublic void configure(java.util.Map<java.lang.String,?> configs, boolean isKey)- Specified by:
- configurein interface- org.apache.kafka.common.serialization.Serializer<T>
 
 - 
createMappingsprotected static java.util.Map<java.lang.String,java.lang.Class<?>> createMappings(java.lang.String mappings) 
 - 
serialize@Nullable public byte[] serialize(java.lang.String topic, org.apache.kafka.common.header.Headers headers, @Nullable T data)- Specified by:
- serializein interface- org.apache.kafka.common.serialization.Serializer<T>
 
 - 
serialize@Nullable public byte[] serialize(java.lang.String topic, @Nullable T data)- Specified by:
- serializein interface- org.apache.kafka.common.serialization.Serializer<T>
 
 - 
closepublic void close() - Specified by:
- closein interface- java.lang.AutoCloseable
- Specified by:
- closein interface- java.io.Closeable
- Specified by:
- closein interface- org.apache.kafka.common.serialization.Serializer<T>
 
 - 
copyWithTypepublic <X> JsonSerializer<X> copyWithType(java.lang.Class<? super X> newTargetType) Copies this serializer with same configuration, except new target type reference is used.- Type Parameters:
- X- new serialization source type
- Parameters:
- newTargetType- type reference forced for serialization, not null
- Returns:
- new instance of serializer with type changes
- Since:
- 2.6
 
 - 
copyWithTypepublic <X> JsonSerializer<X> copyWithType(com.fasterxml.jackson.core.type.TypeReference<? super X> newTargetType) Copies this serializer with same configuration, except new target type reference is used.- Type Parameters:
- X- new serialization source type
- Parameters:
- newTargetType- type reference forced for serialization, not null
- Returns:
- new instance of serializer with type changes
- Since:
- 2.6
 
 - 
copyWithTypepublic <X> JsonSerializer<X> copyWithType(com.fasterxml.jackson.databind.JavaType newTargetType) Copies this serializer with same configuration, except new target java type is used.- Type Parameters:
- X- new serialization source type
- Parameters:
- newTargetType- java type forced for serialization, not null
- Returns:
- new instance of serializer with type changes
- Since:
- 2.6
 
 - 
forKeyspublic JsonSerializer<T> forKeys() Designate this serializer for serializing keys (default is values); only applies if the default type mapper is used.- Returns:
- the serializer.
- Since:
- 2.3
- See Also:
- setUseTypeMapperForKey(boolean)
 
 - 
noTypeInfopublic JsonSerializer<T> noTypeInfo() Do not include type info headers.- Returns:
- the serializer.
- Since:
- 2.3
- See Also:
- setAddTypeInfo(boolean)
 
 - 
typeMapperpublic JsonSerializer<T> typeMapper(Jackson2JavaTypeMapper mapper) Use the suppliedJackson2JavaTypeMapper.- Parameters:
- mapper- the mapper.
- Returns:
- the serializer.
- Since:
- 2.3
- See Also:
- setTypeMapper(Jackson2JavaTypeMapper)
 
 
- 
 
-