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:
Closeable
,AutoCloseable
,org.apache.kafka.common.serialization.Serializer<T>
public class JsonSerializer<T>
extends Object
implements org.apache.kafka.common.serialization.Serializer<T>
Generic
Serializer
for sending
Java objects to Kafka as JSON.
IMPORTANT: Configuration must be done completely with property setters or via
configure(Map, boolean)
, not a mixture. If any setters have been called,
configure(Map, boolean)
will be a no-op.
- Author:
- Igor Stepanov, Artem Bilan, Gary Russell, Elliot Kennedy, Wang Zhiyang, Omer Celik
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
Kafka config property for disabling adding type headers.protected boolean
protected final com.fasterxml.jackson.databind.ObjectMapper
static final String
Kafka config property to add type mappings to the type mapper: 'foo:com.Foo,bar:com.Bar'.protected Jackson2JavaTypeMapper
-
Constructor Summary
ConstructorDescriptionJsonSerializer
(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 Summary
Modifier and TypeMethodDescriptionvoid
close()
void
<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
(Class<? super X> newTargetType) Copies this serializer with same configuration, except new target type reference is used.createMappings
(String mappings) forKeys()
Designate this serializer for serializing keys (default is values); only applies if the default type mapper is used.boolean
Do not include type info headers.byte[]
byte[]
void
setAddTypeInfo
(boolean addTypeInfo) Set to false to disable adding type info headers.void
setTypeMapper
(Jackson2JavaTypeMapper typeMapper) Set a customized type mapper.void
setUseTypeMapperForKey
(boolean isKey) Configure the default Jackson2JavaTypeMapper to use key type headers.typeMapper
(Jackson2JavaTypeMapper mapper) Use the suppliedJackson2JavaTypeMapper
.
-
Field Details
-
ADD_TYPE_INFO_HEADERS
Kafka config property for disabling adding type headers.- See Also:
-
TYPE_MAPPINGS
Kafka config property to add type mappings to the type mapper: 'foo:com.Foo,bar:com.Bar'.- See Also:
-
objectMapper
protected final com.fasterxml.jackson.databind.ObjectMapper objectMapper -
addTypeInfo
protected boolean addTypeInfo -
typeMapper
-
-
Constructor Details
-
JsonSerializer
public JsonSerializer() -
JsonSerializer
-
JsonSerializer
public JsonSerializer(com.fasterxml.jackson.databind.ObjectMapper objectMapper) -
JsonSerializer
public JsonSerializer(com.fasterxml.jackson.core.type.TypeReference<? super T> targetType, com.fasterxml.jackson.databind.ObjectMapper objectMapper) -
JsonSerializer
public JsonSerializer(com.fasterxml.jackson.databind.JavaType targetType, com.fasterxml.jackson.databind.ObjectMapper objectMapper)
-
-
Method Details
-
isAddTypeInfo
public boolean isAddTypeInfo() -
setAddTypeInfo
public void setAddTypeInfo(boolean addTypeInfo) Set to false to disable adding type info headers.- Parameters:
addTypeInfo
- true to add headers.- Since:
- 2.1
-
getTypeMapper
-
setTypeMapper
Set a customized type mapper.- Parameters:
typeMapper
- the type mapper.- Since:
- 2.1
-
setUseTypeMapperForKey
public 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
-
configure
- Specified by:
configure
in interfaceorg.apache.kafka.common.serialization.Serializer<T>
-
createMappings
-
serialize
@Nullable public byte[] serialize(String topic, org.apache.kafka.common.header.Headers headers, @Nullable T data) - Specified by:
serialize
in interfaceorg.apache.kafka.common.serialization.Serializer<T>
-
serialize
- Specified by:
serialize
in interfaceorg.apache.kafka.common.serialization.Serializer<T>
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceorg.apache.kafka.common.serialization.Serializer<T>
-
copyWithType
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
-
copyWithType
public <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
-
copyWithType
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
-
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:
-
noTypeInfo
Do not include type info headers.- Returns:
- the serializer.
- Since:
- 2.3
- See Also:
-
typeMapper
Use the suppliedJackson2JavaTypeMapper
.- Parameters:
mapper
- the mapper.- Returns:
- the serializer.
- Since:
- 2.3
- See Also:
-