如何使用SpringBoot 自定义转换器

这篇具有很好参考价值的文章主要介绍了如何使用SpringBoot 自定义转换器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

😀前言
本篇博文是关于SpringBoot 自定义转换器的使用,希望你能够喜欢😊

🏠个人主页:晨犀主页
🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊

自定义转换器

基本介绍

  1. SpringBoot 在响应客户端请求时,将提交的数据封装成对象时,使用了内置的转换器

  2. SpringBoot 也支持自定义转换器, 这个内置转换器在debug 的时候, 可以看到 提供了124 个内置转换器.

  3. 看下源码GenericConverter-ConvertiblePair

GenericConverter里面有一个内部类ConvertiblePair,自定义转换器时他的两个类型属性需要我们去指定。

  1. 如何使用SpringBoot 自定义转换器,SpringBoot,spring boot,java,后端

如何使用SpringBoot 自定义转换器,SpringBoot,spring boot,java,后端

如何使用SpringBoot 自定义转换器,SpringBoot,spring boot,java,后端

自定义转换器-应用实例

需求说明: 演示自定义转换器使用

如何使用SpringBoot 自定义转换器,SpringBoot,spring boot,java,后端

代码实现

  1. 修改save.html
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>添加妖怪</title>
    </head>
    <body>
        <h1>添加妖怪-坐骑[测试封装POJO;]</h1>
        <form action="/savemonster" method="post">
            编号: <input name="id" value="100"><br/>
            姓名: <input name="name" value="牛魔王"/> <br/>
            年龄: <input name="age" value="500"/> <br/>
            婚否: <input name="isMarried" value="true"/> <br/>
            生日: <input name="birth" value="2000/11/11"/> <br/>
            <!-- 使用自定义转换器关联car, 字符串整体提交, 使用,号间隔  -->
            坐骑:<input name="car" value="避水兽,66666.6"><br/>
            <!--    坐骑:<input name="car.name" value="奔驰"/><br/>-->
            <!--    价格:<input name="car.price" value="9999.9"/>-->
            <input type="submit" value="保存"/>
        </form>
    </body>
</html>
  1. 创建src\main\java\com\nlc\web\config\WebConfig.java,增加自定义转换器-
/**
 * @Configuration(proxyBeanMethods = false)
 * 1. 表示 WebConfig 是一个配置类
 * 2. proxyBeanMethods = false 使用Lite模式
 */
@Configuration(proxyBeanMethods = false)
public class WebConfig  {
    //注入bean WebMvcConfigurer
    @Bean
    public WebMvcConfigurer webMvcConfigurer() {

        return new WebMvcConfigurer() {
            @Override
            public void addFormatters(FormatterRegistry registry) {
                /**
                 * 解读
                 * 1. 在addFormatters 方法中,增加一个自定义的转换器
                 * 2. 增加自定义转换器 String -> Car
                 * 3. 增加的自定义转换器会注册到 converters 容器中
                 * 4. converters 底层结构是 ConcurrentHashMap 内置有124转换器
                 * 5. 一会会使用debug来看到这些转换器
                 */
				//使用匿名内部类添加
                registry.addConverter(new Converter<String, Car>() {
                    @Override
                    public Car convert(String source) {//source就是 传入的字符串 避水兽,66666.6
                        //这里就加入你的自定义的转换业务代码
                        if (!ObjectUtils.isEmpty(source)) {
                            Car car = new Car();
                            String[] split = source.split(",");
                            car.setName(split[0]);
                            car.setPrice(Double.parseDouble(split[1]));
                            return car;
                        }
                        return null;
                    }
                });
            }
        };
    }
}

测试

完成测试, 浏览器http://localhost:8080/save.html

如何使用SpringBoot 自定义转换器,SpringBoot,spring boot,java,后端

如何使用SpringBoot 自定义转换器,SpringBoot,spring boot,java,后端

Debug 查看新增的Converter

如何使用SpringBoot 自定义转换器,SpringBoot,spring boot,java,后端

如何使用SpringBoot 自定义转换器,SpringBoot,spring boot,java,后端

如何使用SpringBoot 自定义转换器,SpringBoot,spring boot,java,后端

------注意看, 多了一个我们自定义的转换器String->com.nlc.web.bean.Car

如何使用SpringBoot 自定义转换器,SpringBoot,spring boot,java,后端

注册转换器换种写法-方便理解

如果上面的方法不好理解可以看看下面

@Configuration(proxyBeanMethods = false)
public class WebConfig  {
    //注入bean WebMvcConfigurer
    @Bean
    public WebMvcConfigurer webMvcConfigurer() {

        return new WebMvcConfigurer() {
            @Override
            public void addFormatters(FormatterRegistry registry) {

                //转种写法来注册自定义转换器-方便理解

                //1.先创建自定义的转换器
                Converter<String,Car> hspConverter = new Converter<String, Car>() {
                    @Override
                    public Car convert(String source) {//source就是 传入的字符串 避水金晶兽,666.6
                        //这里就加入你的自定义的转换业务代码
                        if (!ObjectUtils.isEmpty(source)) {

                            Car car = new Car();
                            String[] split = source.split(",");
                            car.setName(split[0]);
                            car.setPrice(Double.parseDouble(split[1]));
                            return car;
                        }
                        return null;
                    }
                };
                //2添加转换器到converters key-[源类型->目标类型]
                registry.addConverter(hspConverter);
            }
        };
    }
}

也可以有多个转换器,但是不能有相同的k,k是唯一的。如果有两个相同的k,第二个会自动替换第一个。

😄总结

  1. 转换器是已k-v的形式存放,k是唯一的,如果有多个相同k的转换器,会被下一个转换器替代。
  2. 自定义转换器的业务代码是由程序员决定。
  3. 创建自定义转换器后不要忘记添加转换器到converters。

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞文章来源地址https://www.toymoban.com/news/detail-655314.html

到了这里,关于如何使用SpringBoot 自定义转换器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring MVC获取参数和自定义参数类型转换器及编码过滤器

    目录   一、使用Servlet原生对象获取参数 1.1 控制器方法 1.2 测试结果 二、自定义参数类型转换器 2.1 编写类型转换器类 2.2 注册类型转换器对象  2.3 测试结果  三、编码过滤器 3.1 JSP表单 3.2 控制器方法 3.3 配置过滤器 3.4 测试结果  往期专栏文章相关导读  1. Maven系列专

    2024年02月10日
    浏览(65)
  • Spring boot之WEB 开发-静态资源访问--自定义转换器--处理JSON--内容协商

    在线文档: https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.developing-web-applications 1. 只要静态资源放在类路径下: /static 、/public 、/resources 、/META-INF/resources可以被直接访问- 对应文件WebProperties.java 2. 常见静态资源:JS、CSS 、图片(.jpg .png .gif .bmp .svg)、字体

    2024年02月09日
    浏览(58)
  • 使用Spring MVC的消息转换器设置日期格式

    在后端返回给前端的JSON数据中含有日期类型的字段时,如何指定该类型的日期的显示格式。 使用Spring MVC的消息转换器即可。 添加配置类,并继承 WebMvcConfigurationSupport 类,重写 extendMessageConverters 自定义对象转换器 JacksonObjectMapper ,设置对应日期类型的转换格式 随后问题将会

    2024年02月16日
    浏览(57)
  • EasyExcel自定义字段对象转换器支持转换实体和集合实体

    1. 实现ObjectConverter 2. 使用 3. 测试 3.1 导出excel 手动添加一些数据 导出 写入 excel 转换成功 3.2 导入excel 将上面生成的 excel 文件导入 读取 excel 数据并转换成功

    2024年02月11日
    浏览(44)
  • Spring MVC 日期转换器

    配置自定义日期转换器

    2024年02月02日
    浏览(65)
  • 如何使用Word转PDF转换器在线工具?在线Word转PDF使用方法

    Word转PDF转换器在线,是一种方便快捷的工具,可帮助您在不需要下载任何软件的情况下完成此任务。无论您是需要在工作中共享文档,还是将文件以PDF格式保存以确保格式不变,都可以依靠这款在线工具轻松完成转换。那么如何使用Word转PDF转换器在线工具呢? 如何使用Word转

    2024年02月14日
    浏览(58)
  • 【SpringBoot篇】分页查询 | 扩展SpringMvc的消息转换器

    做了几个项目,发现在这几个项目里面,都实现了 分页查询 效果,所以就总结一下,方便学习 我们 基于黑马程序员的苍穹外卖 来讲解分页查询的要点 分页查询是指将大量数据按照固定大小的页进行切分,每次查询只返回一页数据,通过不断翻页来获取全部数据。 Result.j

    2024年02月03日
    浏览(48)
  • Spring Boot整合日期转换器(Converter)和拦截器(HandlerInterceptor)

    配置日期转换器(WebMvcConfigurer) 说明         WebMvcConfigurer配置类其实是 Spring 内部的一种配置方式,采用 JavaBean 的形式来代替传统的 xml 配置文件形式针对框架进行个性化定制,例如:拦截器,类型转化器等等。 代码示例 配置拦截器(WebMvcConfigurer)

    2024年01月17日
    浏览(66)
  • C#底层库--任意进制转换器(可自定义顺序字符,2、4、8、16、18进制都支持)

    C#底层库–RegexHelper正则表达式辅助类 本文链接:https://blog.csdn.net/youcheng_ge/article/details/109745286 C#底层库–程序日志记录类 本文链接:https://blog.csdn.net/youcheng_ge/article/details/124187709 C#底层库–排序算法帮助类 本文链接:https://blog.csdn.net/youcheng_ge/article/details/124495730 C#底层库–

    2024年02月06日
    浏览(55)
  • 如何利用音频转换器将多个MP3音频转换为OGG格式

    现在,我们接触到的很多音频文件一般都是MP3格式的。但是我们偶尔也需要用到ogg格式的音频文件,所以就需要我们将MP3格式音频文件转换为ogg格式了,那么,如果想要将MP3格式文件转换为OGG格式该如何操作呢?相信很多朋友心里都没有答案,小编找到了一种有效的方法,接

    2024年03月11日
    浏览(83)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包