public abstract class AbstractJackson2HttpMessageConverter extends AbstractGenericHttpMessageConverter<ObjectSE>
HttpMessageConverter
実装の抽象基本クラス。Spring 5.3 以降、Jackson 2.9 から 2.12 と互換性があります。
MappingJackson2HttpMessageConverter
修飾子と型 | フィールドと説明 |
---|---|
static CharsetSE | DEFAULT_CHARSET 使用すべきではありません。 |
protected ObjectMapper | defaultObjectMapper |
logger
修飾子 | コンストラクターと説明 |
---|---|
protected | AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper) |
protected | AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper, MediaType... supportedMediaTypes) |
protected | AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper, MediaType supportedMediaType) |
修飾子と型 | メソッドと説明 |
---|---|
boolean | canRead(ClassSE<?> clazz, MediaType mediaType) この実装は、指定されたクラスがサポートされているかどうか、およびサポートされているメディア型 に指定されたメディア型が 含まれているかどうかをチェックします。 |
boolean | canRead(TypeSE type, ClassSE<?> contextClass, MediaType mediaType) 指定された型がこのコンバーターで読み取れるかどうかを示します。 |
boolean | canWrite(ClassSE<?> clazz, MediaType mediaType) |
protected CharsetSE | getCharset(MediaType contentType) JSON 入力に使用する文字セットを決定します。 |
protected LongSE | getContentLength(ObjectSE object, MediaType contentType) 指定された型のコンテンツの長さを返します。 |
protected MediaType | getDefaultContentType(ObjectSE object) 指定された型のデフォルトのコンテンツ型を返します。 |
protected JavaType | getJavaType(TypeSE type, ClassSE<?> contextClass) 指定された型とコンテキストクラスの Jackson JavaType を返します。 |
protected JsonEncoding | getJsonEncoding(MediaType contentType) 指定されたコンテンツ型に使用する JSON エンコーディングを決定します。 |
ObjectMapper | getObjectMapper() 使用中のメイン ObjectMapper を返却してください。 |
MapSE<MediaType, ObjectMapper> | getObjectMappersForType(ClassSE<?> clazz) 指定されたクラスの ObjectMapper 登録があれば、それを返します。 |
ListSE<MediaType> | getSupportedMediaTypes(ClassSE<?> clazz) 指定されたクラスについて、このコンバーターでサポートされているメディア型のリストを返します。 |
protected void | logWarningIfNecessary(TypeSE type, ThrowableSE cause) ObjectMapper.canDeserialize(com.fasterxml.jackson.databind.JavaType) /ObjectMapper.canSerialize(java.lang.Class<?>) チェックからの特定の例外をログに記録するかどうかを決定します。 |
ObjectSE | read(TypeSE type, ClassSE<?> contextClass, HttpInputMessage inputMessage) 指定された入力メッセージから指定された型のオブジェクトを読み取り、それを返します。 |
protected ObjectSE | readInternal(ClassSE<?> clazz, HttpInputMessage inputMessage) 実際のオブジェクトを読み取る抽象テンプレートメソッド。 |
void | registerObjectMappersForType(ClassSE<?> clazz, ConsumerSE<MapSE<MediaType, ObjectMapper>> registrar) 指定された Class SE に使用する ObjectMapper インスタンスを構成します。 |
void | setObjectMapper(ObjectMapper objectMapper) オブジェクト変換に使用するメイン ObjectMapper を構成します。 |
void | setPrettyPrint(boolean prettyPrint) JSON を記述するときに DefaultPrettyPrinter を使用するかどうか。 |
protected void | writeInternal(ObjectSE object, TypeSE type, HttpOutputMessage outputMessage) 実際の本文を書き込む抽象テンプレートメソッド。 |
protected void | writePrefix(JsonGenerator generator, ObjectSE object) メインコンテンツの前にプレフィックスを書きます。 |
protected void | writeSuffix(JsonGenerator generator, ObjectSE object) メインコンテンツの後にサフィックスを記述します。 |
canWrite, supports, write, writeInternal
addDefaultHeaders, canRead, canWrite, getDefaultCharset, getSupportedMediaTypes, read, setDefaultCharset, setSupportedMediaTypes, write
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
getSupportedMediaTypes, read, write
@Nullable @DeprecatedSE public static final CharsetSE DEFAULT_CHARSET
protected ObjectMapper defaultObjectMapper
protected AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper)
protected AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper, MediaType supportedMediaType)
protected AbstractJackson2HttpMessageConverter(ObjectMapper objectMapper, MediaType... supportedMediaTypes)
public void setObjectMapper(ObjectMapper objectMapper)
ObjectMapper
を構成します。設定されていない場合、デフォルトの ObjectMapper
インスタンスが作成されます。 カスタム構成の ObjectMapper
を設定することは、JSON 直列化プロセスをさらに制御する 1 つの方法です。例: 特定の型のカスタムシリアライザーを提供する拡張 SerializerFactory
を構成できます。直列化プロセスを改善するための別のオプションは、直列化する型に Jackson が提供するアノテーションを使用することです。この場合、カスタム構成の ObjectMapper は不要です。
public ObjectMapper getObjectMapper()
ObjectMapper
を返却してください。public void registerObjectMappersForType(ClassSE<?> clazz, ConsumerSE<MapSE<MediaType,ObjectMapper>> registrar)
Class
SE に使用する ObjectMapper
インスタンスを構成します。これは、default
ObjectMapper から逸脱する場合、または ObjectMapper
を MediaType
によって変化させる場合に役立ちます。 注意 : このメソッドを使用すると、特定のクラスのデフォルトの ObjectMapper
および supportedMediaTypes
の使用が事実上オフになります。ここで構成されたマッピングは、特定のクラスでサポートする必要があるすべての MediaType を include
に設定することが重要です。
clazz
- ObjectMapper インスタンスを登録するオブジェクトの型 registrar
- 指定されたクラスの MediaType と ObjectMapper の関連付けを設定または更新するコンシューマー @Nullable public MapSE<MediaType,ObjectMapper> getObjectMappersForType(ClassSE<?> clazz)
clazz
- 登録を検索するクラス public ListSE<MediaType> getSupportedMediaTypes(ClassSE<?> clazz)
HttpMessageConverter
HttpMessageConverter.getSupportedMediaTypes()
とは異なる場合があります。clazz
- チェックするクラスの型 public void setPrettyPrint(boolean prettyPrint)
DefaultPrettyPrinter
を使用するかどうか。これは、次のように ObjectMapper
をセットアップするためのショートカットです。ObjectMapper mapper = new ObjectMapper(); mapper.configure(SerializationFeature.INDENT_OUTPUT, true); converter.setObjectMapper(mapper);
public boolean canRead(ClassSE<?> clazz, @Nullable MediaType mediaType)
AbstractHttpMessageConverter
HttpMessageConverter<ObjectSE>
の canRead
AbstractHttpMessageConverter<ObjectSE>
の canRead
clazz
- 読み込み可能性をテストするクラス mediaType
- 読み取るメディア型(指定しない場合は null
にできます); 通常、Content-Type
ヘッダーの値。true
。それ以外の場合は false
public boolean canRead(TypeSE type, @Nullable ClassSE<?> contextClass, @Nullable MediaType mediaType)
GenericHttpMessageConverter
HttpMessageConverter.canRead(Class, MediaType)
と同じチェックを実行し、ジェネリクス型に関連する追加のチェックを実行する必要があります。GenericHttpMessageConverter<ObjectSE>
の canRead
AbstractGenericHttpMessageConverter<ObjectSE>
の canRead
type
- 読みやすさをテストするための(潜在的に汎用)型 contextClass
- ターゲット型のコンテキストクラス。たとえば、ターゲット型がメソッドシグネチャーに表示されるクラス (null
にすることができます)mediaType
- 読み取るメディア型は、指定しない場合は null
にできます。通常、Content-Type
ヘッダーの値。true
。それ以外の場合は false
public boolean canWrite(ClassSE<?> clazz, @Nullable MediaType mediaType)
AbstractHttpMessageConverter
HttpMessageConverter<ObjectSE>
の canWrite
AbstractHttpMessageConverter<ObjectSE>
の canWrite
clazz
- 書き込み可能性をテストするクラス mediaType
- 書き込むメディア型(指定しない場合は null
にすることができます); 通常、Accept
ヘッダーの値。true
。それ以外の場合は false
protected void logWarningIfNecessary(TypeSE type, @Nullable ThrowableSE cause)
ObjectMapper.canDeserialize(com.fasterxml.jackson.databind.JavaType)
/ObjectMapper.canSerialize(java.lang.Class<?>)
チェックからの特定の例外をログに記録するかどうかを決定します。type
- Jackson が(非)直列化可能性についてテストしたクラス cause
- 評価する Jackson 投げ例外 (通常、JsonMappingException
)public ObjectSE read(TypeSE type, @Nullable ClassSE<?> contextClass, HttpInputMessage inputMessage) throws IOExceptionSE, HttpMessageNotReadableException
GenericHttpMessageConverter
type
- 返される(潜在的に汎用の)型のオブジェクト。この型は、このインターフェースの canRead
メソッドに事前に渡されている必要があります。このメソッドは true
を返している必要があります。contextClass
- ターゲット型のコンテキストクラス。たとえば、ターゲット型がメソッドシグネチャーに表示されるクラス (null
にすることができます)inputMessage
- 読み込む HTTP 入力メッセージ IOExceptionSE
- I/O エラーの場合 HttpMessageNotReadableException
- 変換エラーの場合 protected ObjectSE readInternal(ClassSE<?> clazz, HttpInputMessage inputMessage) throws IOExceptionSE, HttpMessageNotReadableException
AbstractHttpMessageConverter
AbstractHttpMessageConverter.read(java.lang.Class<? extends T>, org.springframework.http.HttpInputMessage)
から呼び出されます。AbstractHttpMessageConverter<ObjectSE>
の readInternal
clazz
- 返すオブジェクトの型 inputMessage
- 読み込む HTTP 入力メッセージ IOExceptionSE
- I/O エラーの場合 HttpMessageNotReadableException
- 変換エラーの場合 protected CharsetSE getCharset(@Nullable MediaType contentType)
デフォルトでは、これは入力 MediaType
からの文字セット、または UTF-8
にフォールバックします。サブクラスでオーバーライドできます。
contentType
- HTTP 入力メッセージのコンテンツ型 protected void writeInternal(ObjectSE object, @Nullable TypeSE type, HttpOutputMessage outputMessage) throws IOExceptionSE, HttpMessageNotWritableException
AbstractGenericHttpMessageConverter
AbstractGenericHttpMessageConverter.write(T, java.lang.reflect.Type, org.springframework.http.MediaType, org.springframework.http.HttpOutputMessage)
から呼び出されます。AbstractGenericHttpMessageConverter<ObjectSE>
の writeInternal
object
- 出力メッセージに書き込むオブジェクト type
- 書き込むオブジェクトの型 (null
の場合があります)outputMessage
- 書き込む HTTP 出力メッセージ IOExceptionSE
- I/O エラーの場合 HttpMessageNotWritableException
- 変換エラーの場合 protected void writePrefix(JsonGenerator generator, ObjectSE object) throws IOExceptionSE
generator
- コンテンツの書き込みに使用するジェネレーター。object
- 出力メッセージに書き込むオブジェクト。IOExceptionSE
protected void writeSuffix(JsonGenerator generator, ObjectSE object) throws IOExceptionSE
generator
- コンテンツの書き込みに使用するジェネレーター。object
- 出力メッセージに書き込むオブジェクト。IOExceptionSE
protected JavaType getJavaType(TypeSE type, @Nullable ClassSE<?> contextClass)
JavaType
を返します。type
- Jackson JavaType を返す汎用型 contextClass
- ターゲット型のコンテキストクラス。たとえば、ターゲット型がメソッドシグネチャーに表示されるクラス (null
にすることができます)protected JsonEncoding getJsonEncoding(@Nullable MediaType contentType)
contentType
- 呼び出し元によってリクエストされたメディア型 null
)@Nullable protected MediaType getDefaultContentType(ObjectSE object) throws IOExceptionSE
AbstractHttpMessageConverter
AbstractHttpMessageConverter.write(T, org.springframework.http.MediaType, org.springframework.http.HttpOutputMessage)
が呼び出されたときに呼び出されます。 デフォルトでは、supportedMediaTypes
プロパティの最初の要素があれば、それを返します。サブクラスでオーバーライドできます。
AbstractHttpMessageConverter<ObjectSE>
の getDefaultContentType
object
- コンテンツ型を返す型 null
IOExceptionSE
protected LongSE getContentLength(ObjectSE object, @Nullable MediaType contentType) throws IOExceptionSE
AbstractHttpMessageConverter
デフォルトでは、これは null
を返します。これは、コンテンツの長さが不明であることを意味します。サブクラスでオーバーライドできます。
AbstractHttpMessageConverter<ObjectSE>
の getContentLength
object
- コンテンツの長さを返す型 null
IOExceptionSE