No processo de criação de serviços de dados RESTful, definimos controladores e repositórios e os modificamos com algumas anotações, mas até agora não realizamos conversão de objetos - convertendo objetos de entidade Java em fluxos de saída de dados HTTP. A camada subjacente da Spring Boot usa httpmessageConverters para produzir classes de entidade Java no formato JSON, contando na biblioteca Jackson. Quando vários conversores estiverem disponíveis, selecione o conversor mais adequado para uso de acordo com o tipo de objeto de mensagem e o tipo de conteúdo necessário.
No artigo httpmessageConverter, a análise do código -fonte Springmvc, há um diagrama que indica claramente a localização do conversor de mensagens.
Localização do conversor de mensagens
O objetivo do conversor de mensagens é: a conversão do formato de solicitação de entrada HTTP em objetos Java; A conversão de objetos Java em solicitações de saída HTTP. Alguns conversores de mensagens suportam apenas vários tipos de dados, alguns suportam vários formatos de saída e outros fornecem os dois. Por exemplo: Mappingjackson2httpmessageConverter pode converter objetos Java em Application/JSON, enquanto o protobufhttpmessageConverter suporta apenas entradas de com.google.protobuf.message, mas pode sair do aplicativo, JSON/XML, Text/Plain e Application/X-
Como
Existem três maneiras de configurar o conversor de mensagens no projeto, a principal diferença é a medição da personalização e a facilidade de uso.
Adicionar definição @Bean à classe WebConfiguration
@BeanPublic byteArrayHttpMessageConverter byteArrayHttpMessageConverter () {Return New ByteArrayHttpMessageConverter ();} Substitua o método ConfigureMessaGeconverters para estender a lista vinculada ao conversor de mensagens existente;
@OverridePublic void ConfigureMessaGeconverters (List <httpmessageConverter <? >> conversores) {converters.add (novo byteArrayHttpMessageConverter ());} Para mais controle, você pode reescrever o método ExtendMessAgeconverters, primeiro limpar a lista de conversores e adicionar um conversor personalizado.
@OverridePublic void estendMessageConverters (list <httpmessageConverter <? >> conversores) {converters.clear (); converters.add (novo bytearrayhttpmessageConverter ());}analisar
A Spring fornece várias maneiras de realizar a mesma tarefa e qual é escolhida depende se focamos mais na conveniência ou personalização.
Quais são as diferenças entre os três métodos mencionados acima?
Definir httpmessageConverter via @bean é a maneira mais fácil de adicionar um conversor de mensagens ao seu projeto, semelhante à adição acima mencionada dos filtros de servlet. Se a mola varrer um feijão do tipo httpmessageConverter, ele será adicionado automaticamente à cadeia de chamadas. Recomenda -se herdar a WebConfiguration no projeto do WebMVCConfigureRAdApter.
É conveniente adicionar um conversor personalizado, reescrevendo o método ConfigureMessaGeconverters, mas há uma fraqueza: se houver várias instâncias de WebMVCConfiguradores no projeto (que nos definimos ou fornecidos por Spring Boot por padrão), não é garantido que o método de flertile.
Se for necessário mais controle granular: limpar outros conversores de mensagens ou duplicar claramente conversores, isso pode ser feito reescrevendo o ExtendMessAgConverters, e ainda há essa possibilidade: outras instâncias do WebMVCConfigurer também podem reescrever esse método, mas a chance é muito pequena.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.