当前位置: 首页 > news >正文

springBoot 消息转换器和自定义消息转换器

public interface HttpMessageConverter<T> {/*** 能否以指定的类读取*/boolean canRead(Class<?> clazz, @Nullable MediaType mediaType);/*** 能否以指定的类写*/boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType);/*** 返回支持是消息转换器的媒体列表*/List<MediaType> getSupportedMediaTypes();/*** Return the list of media types supported by this converter for the given* class. The list may differ from {@link #getSupportedMediaTypes()} if the* converter does not support the given Class or if it supports it only for* a subset of media types.* @param clazz the type of class to check* @return the list of media types supported for the given class* @since 5.3.4*/default List<MediaType> getSupportedMediaTypes(Class<?> clazz) {return (canRead(clazz, null) || canWrite(clazz, null) ?getSupportedMediaTypes() : Collections.emptyList());}/*** 将输入的内容读成指定的类型并返回*/T read(Class<? extends T> clazz, HttpInputMessage inputMessage)throws IOException, HttpMessageNotReadableException;/*** 将给定的内容写成指定的类型*/void write(T t, @Nullable MediaType contentType, HttpOutputMessage outputMessage)throws IOException, HttpMessageNotWritableException;}

由此可见,可根据游览器接受类型和服务器生产类型,返回不同的数据类型:

①定义游览器可以接受的数据类型:

例如:

Accept:text/html,application/xhtml+xml,application/xml

②服务器引入可生产的数据类型的jar或自定义消息转换器

例如:引入可生产xml消息类型的jar包   

扩展:自定义消息转换器

一、通过实现接口:WebMvcConfigurer

@Configuration
public class BootConfig implements WebMvcConfigurer {/*** 自定义参数转换*/@Overridepublic void addFormatters(FormatterRegistry registry) {registry.addConverter(new Converter<String, Integer>() {@Overridepublic Integer convert(String source) {return null;}});}/****/@Overridepublic void extendMessageConverters(List<HttpMessageConverter<?>> converters) {converters.add(new MyMessageConver());}
}

二、通过注册Bean

@Bean
public WebMvcConfigurer webMvcConfigurer() {return new WebMvcConfigurer() {/*** 添加自定义格式化器或转换器** @param registry*/@Overridepublic void addFormatters(FormatterRegistry registry) {//Converter<S, T>  S源类型,T目标类型registry.addConverter(new MyConverter());}/*** 扩展消息转换器*/@Overridepublic void extendMessageConverters(List<HttpMessageConverter<?>> converters) {converters.add(new MyMessageConver());}};
}

   

相关文章:

springBoot 消息转换器和自定义消息转换器

public interface HttpMessageConverter<T> {/*** 能否以指定的类读取*/boolean canRead(Class<?> clazz, Nullable MediaType mediaType);/*** 能否以指定的类写*/boolean canWrite(Class<?> clazz, Nullable MediaType mediaType);/*** 返回支持是消息转…...

机器学习笔记之流形模型——标准流模型基本介绍

机器学习笔记之流形模型——标准流模型基本介绍引言回顾&#xff1a;隐变量模型的缺陷标准流(Normalizing Flow\text{Normalizing Flow}Normalizing Flow)思想分布变换的推导过程引言 本节将介绍概率生成模型——标准流模型(Normalizing Flow\text{Normalizing Flow}Normalizi…...

MIT:只需一层RF传感器,就能为AR头显赋予“X光”穿透视力

近年来&#xff0c;AR在仓库、工厂等场景得到应用&#xff0c;比如GlobalFoundries、亚马逊、菜鸟裹裹就使用摄像头扫描定位货品&#xff0c;并使用AR来导航和标记。目前&#xff0c;这种方案主要基于视觉算法&#xff0c;因此仅能定位视线范围内的目标。然而&#xff0c;在一些…...

对 Dom 树的理解

什么是 DOM 从网络传给渲染引擎的 HTML 文件字节流是无法直接被渲染引擎理解的&#xff0c;所以要将其转化为渲染引擎能够理解的内部结构&#xff0c;这个结构就是 DOM。 DOM 提供了对 HTML 文档结构化的表述。 在渲染引擎中&#xff0c;DOM 有三个层面的作用&#xff1a; …...

电商搜索入门

一、搜索用途通常一个电商平台里面的商品&#xff0c;少则几十万多则上千万甚至上亿的sku&#xff0c;在这么多的商品中&#xff0c;如何让用户可以快速查找到自己想要的商品&#xff0c;那么就需要用到搜索功能来实现。通过分析数据发现&#xff0c;接近40%的点击率是直接通过…...

4.3.1初阶数据结构(C语言)(无头不循环单链表)

1.完整的单链表注释&#xff1a; #pragma once #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h>typedef int SLTDateType; // 重定义数据类型typedef struct SListNode // 定义结构体类型的节点 {SLTDateType data;str…...

一文深度解读音视频行业技术发展历程

从1948年的香农定律&#xff0c;到音视频的今天。IMMENSE、36氪&#xff5c;作者 北京时间2月28日凌晨&#xff0c;FIFA年度颁奖典礼在巴黎举行。梅西荣膺年度最佳球员&#xff0c;斯卡洛尼当选年度最佳男足主帅&#xff0c;马丁内斯荣获年度最佳男足门将&#xff01;阿根廷因…...

面向对象拓展贴

1. 类和对象的内存分配机制 1.1 分配机制  Java 内存的结构分析 栈&#xff1a; 一般存放基本数据类型(局部变量)堆&#xff1a; 存放对象(Cat cat , 数组等)方法区&#xff1a;常量池(常量&#xff0c;比如字符串)&#xff0c; 类加载信息示意图 [Cat (name, age, price)]…...

Android仿QQ未读消息拖拽粘性效果

效果图原理分析首先是在指定某个位置画一个圆出来&#xff0c;手指按到这个圆的时候再绘制一个可以根据手指位置移动的圆&#xff0c;随着手指的移动两个圆逐渐分离&#xff0c;分离的过程中两圆中间出现连接带&#xff0c;随着两圆圆心距的增大&#xff0c;半径也是根据某一比…...

Linux 打包压缩解压指令 gzip bzip2 tar

总结自鸟哥Linux私房菜 Linux压缩文件的扩展名大多是&#xff1a;“.tar, .tar.gz, .tgz, .gz, .Z, .bz2, *.xz”&#xff0c; 不同压缩文件使用了不同的算法&#xff0c;不能通用压缩或解压 常见扩展名&#xff1a; *.Z compress 程序压缩的文件&#xff1b; *.zip zip 程序…...

系统升级丨分享返佣,助力商企实现低成本高转化营销

秉承助力传统经济数字化转型的长远理念 酷雷曼VR再次在VR全景营销中发力 创新研发“分享返佣”功能 进一步拓宽商企VR全景营销渠道 助力商企搭建低成本、高传播、高转化 的VR营销体系 01、什么是“分享返佣”&#xff1f; ●“分享返佣”即“推广”返佣&#xff0c;是酷…...

机试代码模板

文章目录进制转换高精度加/乘法搜索BFSDFS树二叉树遍历图Dijkstra算法Kruskal算法动态规划最长公共子序列(LCS)最长上升子序列(LIS)KMP算法进制转换 #include <iostream> #include <string> #include <cmath> #include <iomanip> #include <algori…...

Java性能优化-垃圾回收算法-理解CMS回收器

垃圾回收算法 理解 CMS回收器 三个基本操作 1.回收新生代&#xff08;同时暂停所有的应用线程&#xff09; 2.运行并发周期来清理老年代数据 3.如果有必要则FULL GC压缩老年代 当发生新生代回收 &#xff0c; 如果老年代没有足够的空间容纳晋升的对象则执行FULL GC,所有线程停…...

Oracle11G的表空间数据文件大小限制问题处理

1.表空间数据文件容量 oracle11g的表空间数据文件容量与DB_BLOCK_SIZE有关&#xff0c;在初始建库时&#xff0c;DB_BLOCK_SIZE要根据实际需要&#xff0c;设置为 4K,8K、16K、32K、64K等几种大小&#xff0c;ORACLE的物理文件最大只允许4194304个数据块&#xff08;由操作系统…...

计算机三级|网络技术|备考指南|网络系统结构与设计的基本原则|1

一、网络系统结构与设计的基本原则宽带城域网的关键技术p1 p2 p3设计一个宽带城域网涉及“三个平台一个出口”&#xff0c;即网络平台、业务平台、管理平台和城市宽带出口。宽带城域网&#xff1a;宽带城域网划分为三个层次&#xff1a;核心层、汇聚层、接入层。核心层承担高速…...

基于 TI Sitara系列 AM64x核心板——程序自启动说明

前 言 本文主要介绍AM64x的Cortex-A53、Cortex-M4F和Cortex-R5F核心程序自启动使用说明。默认使用AM6442进行测试演示,AM6412测试步骤与之类似。 本说明文档适用开发环境如下: Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.5.5 Linux开发环境:Ubun…...

自学5个月Java找到了9K的工作,我的方式值得大家借鉴 第一部分

我是去年9月22日才正式学习Java的&#xff0c;因为在国营单位工作了4年&#xff0c;在天津一个月工资只有5000块&#xff0c;而且看不到任何晋升的希望&#xff0c;如果想要往上走&#xff0c;那背后就一定要有关系才行。而且国营单位的气氛是你干的多了&#xff0c;领导觉得你…...

微电影广告的内容突破方案

微电影作为新媒体时代背景的产物&#xff0c;深受大众的欢迎&#xff0c;同时&#xff0c;微电影广告在微电影模式环境下应运而生&#xff0c;以自己独特的传播优势&#xff0c;俘获了大量企业主的青睐&#xff0c;也获得了广大青年群体的喜爱。微电影广告欲确保可持续发展&…...

茌平区为什么越来越多的企业由请高新技术企业?山东同邦科技分享

茌平区为什么越来越多的企业由请高新技术企业?山东同邦科技分享 近年来&#xff0c;越来越多的企业开始申报高新技术企业&#xff0c;认定为国家高新技术企业能获得非常多的好处&#xff0c;那么具体都有哪些呢? 一、国际高新技术企业认定的好处: 1、财政补贴: 获得高新企业…...

谷歌优化排名怎么做出来的?谷歌排名多久做上去?

本文主要分享谷歌排名的算法机制&#xff0c;让你很容易地用更短的时间把Google的自然排名做到首页。 本文由光算创作&#xff0c;有可能会被剽窃和修改&#xff0c;我们佛系对待这种行为吧。 谷歌优化排名怎么做出来的&#xff1f; 答案是&#xff1a;持续更新原创优质内容…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...