Class DefaultJacksonJavaTypeMapper
java.lang.Object
org.springframework.kafka.support.mapping.DefaultJacksonJavaTypeMapper
- All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, ClassMapper, JacksonJavaTypeMapper
public class DefaultJacksonJavaTypeMapper
extends Object
implements JacksonJavaTypeMapper, org.springframework.beans.factory.BeanClassLoaderAware
Jackson 3 type mapper.
- Since:
- 4.0
-
Nested Class Summary
Nested classes/interfaces inherited from interface JacksonJavaTypeMapper
JacksonJavaTypeMapper.TypePrecedence -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringDefault header name for type information.static final StringDefault header name for container object contents type information.static final StringDefault header name for map key type information.static final StringDefault header name for key type information.static final StringDefault header name for key container object contents type information.static final StringDefault header name for key map key type information. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidvoidaddTrustedPackages(String... packagesToTrust) Specify a set of packages to trust during deserialization.voidvoidfromJavaType(tools.jackson.databind.JavaType javaType, org.apache.kafka.common.header.Headers headers) protected @Nullable ClassLoaderReturn the precedence.voidremoveHeaders(org.apache.kafka.common.header.Headers headers) Remove the type information headers.protected StringretrieveHeader(org.apache.kafka.common.header.Headers headers, String headerName) protected @Nullable StringretrieveHeaderAsString(org.apache.kafka.common.header.Headers headers, String headerName) voidsetBeanClassLoader(ClassLoader classLoader) voidsetClassIdFieldName(String classIdFieldName) Configure header name for type information.voidsetContentClassIdFieldName(String contentClassIdFieldName) Configure header name for container object contents type information.voidsetIdClassMapping(Map<String, Class<?>> idClassMapping) voidsetKeyClassIdFieldName(String keyClassIdFieldName) Configure header name for map key type information.voidsetTypePrecedence(JacksonJavaTypeMapper.TypePrecedence typePrecedence) Set the precedence for evaluating type information in message properties.voidsetUseForKey(boolean isKey) Configure the TypeMapper to use default key type class.@Nullable Class<?> toClass(org.apache.kafka.common.header.Headers headers) @Nullable tools.jackson.databind.JavaTypetoJavaType(org.apache.kafka.common.header.Headers headers)
-
Field Details
-
DEFAULT_CLASSID_FIELD_NAME
Default header name for type information.- See Also:
-
DEFAULT_CONTENT_CLASSID_FIELD_NAME
Default header name for container object contents type information.- See Also:
-
DEFAULT_KEY_CLASSID_FIELD_NAME
Default header name for map key type information.- See Also:
-
KEY_DEFAULT_CLASSID_FIELD_NAME
Default header name for key type information.- See Also:
-
KEY_DEFAULT_CONTENT_CLASSID_FIELD_NAME
Default header name for key container object contents type information.- See Also:
-
KEY_DEFAULT_KEY_CLASSID_FIELD_NAME
Default header name for key map key type information.- See Also:
-
-
Constructor Details
-
DefaultJacksonJavaTypeMapper
public DefaultJacksonJavaTypeMapper()
-
-
Method Details
-
getClassIdFieldName
-
setClassIdFieldName
Configure header name for type information.- Parameters:
classIdFieldName- the header name.
-
getContentClassIdFieldName
-
setContentClassIdFieldName
Configure header name for container object contents type information.- Parameters:
contentClassIdFieldName- the header name.
-
getKeyClassIdFieldName
-
setKeyClassIdFieldName
Configure header name for map key type information.- Parameters:
keyClassIdFieldName- the header name.
-
setIdClassMapping
-
setBeanClassLoader
- Specified by:
setBeanClassLoaderin interfaceorg.springframework.beans.factory.BeanClassLoaderAware
-
getClassLoader
-
addHeader
-
retrieveHeader
-
retrieveHeaderAsString
-
getIdClassMapping
-
setUseForKey
public void setUseForKey(boolean isKey) Configure the TypeMapper to use default key type class.- Parameters:
isKey- Use key type headers if true
-
getTypePrecedence
Return the precedence.- Specified by:
getTypePrecedencein interfaceJacksonJavaTypeMapper- Returns:
- the precedence.
-
setTypePrecedence
Description copied from interface:JacksonJavaTypeMapperSet the precedence for evaluating type information in message properties. When using@KafkaListenerat the method level, the framework attempts to determine the target type for payload conversion from the method signature. If so, this type is provided by theMessagingMessageListenerAdapter.By default, if the type is concrete (not abstract, not an interface), this will be used ahead of type information provided in the
__TypeId__and associated headers provided by the sender.If you wish to force the use of the
__TypeId__and associated headers (such as when the actual type is a subclass of the method argument type), set the precedence toJacksonJavaTypeMapper.TypePrecedence.TYPE_ID.- Specified by:
setTypePrecedencein interfaceJacksonJavaTypeMapper- Parameters:
typePrecedence- the precedence.
-
addTrustedPackages
Specify a set of packages to trust during deserialization. The asterisk (*) means trust all.- Specified by:
addTrustedPackagesin interfaceJacksonJavaTypeMapper- Parameters:
packagesToTrust- the trusted Java packages for deserialization
-
toJavaType
public @Nullable tools.jackson.databind.JavaType toJavaType(org.apache.kafka.common.header.Headers headers) - Specified by:
toJavaTypein interfaceJacksonJavaTypeMapper
-
fromJavaType
public void fromJavaType(tools.jackson.databind.JavaType javaType, org.apache.kafka.common.header.Headers headers) - Specified by:
fromJavaTypein interfaceJacksonJavaTypeMapper
-
fromClass
- Specified by:
fromClassin interfaceClassMapper
-
toClass
- Specified by:
toClassin interfaceClassMapper
-
removeHeaders
public void removeHeaders(org.apache.kafka.common.header.Headers headers) Description copied from interface:JacksonJavaTypeMapperRemove the type information headers.- Specified by:
removeHeadersin interfaceJacksonJavaTypeMapper- Parameters:
headers- the headers.
-