Class SpringBootNutzJsonMessageConverter
- All Implemented Interfaces:
org.springframework.http.converter.GenericHttpMessageConverter<Object>, org.springframework.http.converter.HttpMessageConverter<Object>
public class SpringBootNutzJsonMessageConverter
extends org.springframework.http.converter.json.AbstractJsonHttpMessageConverter
Nutz JSON 消息转换器,用于在 Spring Boot 中集成 Nutz 的 JSON 处理能力。 支持通过配置忽略特定类型或 URI
的序列化与反序列化操作,并支持动态控制 JSON 格式。
M36: 原实现单例持有 HttpServletRequest(请求作用域对象,线程安全风险),现改为从
RequestContextHolder 按线程获取当前请求;supports(Class) 收窄——
基础类型/String 交还 Jackson,避免 Nutz 全面接管导致 Jackson 注解(脱敏/格式化)失效。
- Author:
- Kerbores(kerbores@gmail.com)
-
Field Summary
Fields inherited from class org.springframework.http.converter.json.AbstractJsonHttpMessageConverter
DEFAULT_CHARSETFields inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
logger -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleancanWrite(@Nullable Type type, @NonNull Class<?> clazz, @Nullable org.springframework.http.MediaType mediaType) 判断当前消息是否可以被写出。protected @NonNull ObjectreadInternal(@NonNull Type resolvedType, @NonNull Reader reader) setFormat(org.nutz.json.JsonFormat format) 设置 JSON 输出格式setIgnoreTypes(List<String> ignoreTypes) 设置需要忽略处理的类名匹配规则列表setignoreUris(List<String> ignoreUris) 设置需要忽略处理的 URI 匹配规则列表protected boolean判断是否支持指定类型的解析protected voidwriteInternal(@NonNull Object o, @NonNull Type type, @NonNull Writer writer) Methods inherited from class org.springframework.http.converter.json.AbstractJsonHttpMessageConverter
read, readInternal, setJsonPrefix, setPrefixJson, writeInternalMethods inherited from class org.springframework.http.converter.AbstractGenericHttpMessageConverter
canRead, write, writeInternalMethods inherited from class org.springframework.http.converter.AbstractHttpMessageConverter
addDefaultHeaders, canRead, canRead, canWrite, canWrite, getContentLength, getDefaultCharset, getDefaultContentType, getSupportedMediaTypes, read, setDefaultCharset, setSupportedMediaTypes, supportsRepeatableWrites, writeMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.http.converter.HttpMessageConverter
canRead, canWrite, getSupportedMediaTypes, getSupportedMediaTypes, read, write
-
Constructor Details
-
SpringBootNutzJsonMessageConverter
public SpringBootNutzJsonMessageConverter()
-
-
Method Details
-
setIgnoreTypes
设置需要忽略处理的类名匹配规则列表- Parameters:
ignoreTypes- 类型名称的正则表达式列表- Returns:
- 当前实例以支持链式调用
-
setignoreUris
设置需要忽略处理的 URI 匹配规则列表- Parameters:
ignoreUris- URI 的正则表达式列表- Returns:
- 当前实例以支持链式调用
-
setFormat
设置 JSON 输出格式- Parameters:
format- JSON 格式对象- Returns:
- 当前实例以支持链式调用
-
supports
判断是否支持指定类型的解析M36: 收窄支持范围——基础类型/String/Number/Boolean/Character 交还 Jackson (Jackson 注解 @JsonIgnore/@JsonFormat/脱敏在这些类型上语义更完整); ignoreTypes 匹配的类型也不支持(与 canWrite 一致)
- Overrides:
supportsin classorg.springframework.http.converter.AbstractGenericHttpMessageConverter<Object>- Parameters:
clazz- 待判断的类- Returns:
- 是否由本转换器处理
-
canWrite
public boolean canWrite(@Nullable Type type, @NonNull Class<?> clazz, @Nullable org.springframework.http.MediaType mediaType) 判断当前消息是否可以被写出。会根据类型和 URI 进行过滤判断。- Specified by:
canWritein interfaceorg.springframework.http.converter.GenericHttpMessageConverter<Object>- Overrides:
canWritein classorg.springframework.http.converter.AbstractGenericHttpMessageConverter<Object>- Parameters:
type- 泛型类型信息clazz- 实际运行时类mediaType- 媒体类型- Returns:
- 如果允许写出则返回 true,否则返回 false
-
readInternal
-
writeInternal
-