加入收藏 | 设为首页 | 会员中心 | 我要投稿 四平站长网 (https://www.0434zz.com.cn/)- 云服务器、对象存储、基础存储、视频终端、数据应用!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

自定义Formatter格式化器?

发布时间:2021-03-26 13:30:22 所属栏目:传媒 来源:互联网
导读:列(Spring类型转换)到现在,大部分的理论基础已经搞定了,很抽象甚至很枯燥有木有。还好终于快到头了,此处应给跟着学过来的自己1秒钟掌声。接下来的内容会更多的偏向于应用,比如在Spring MVC中的应用、在IoC容器里的应用、在JPA里的应用等。 后续内容相较

列(Spring类型转换)到现在,大部分的理论基础已经搞定了,很抽象甚至很枯燥有木有。还好终于快到头了,此处应给跟着“学”过来的自己1秒钟掌声。接下来的内容会更多的偏向于应用,比如在Spring MVC中的应用、在IoC容器里的应用、在JPA里的应用等。

后续内容相较于前面基础孰轻孰重姑且不能一概而论,但相信大部分同学会更感兴趣些。毕竟具象化的东西更易接受,更顺应人性,并且很多都是些工作中会用、考试中会考、面试中会问的知识点,自然积极性也会高上不少。

本文作为“二者”的承上启下,将介绍自定义ConversionService类型转换服务的集大成者FormattingConversionServiceFactoryBean,以及较少人会关注但设计思路却很重要的DateTimeContext和DateTimeContextHolder内容,很值得你看它一看。

  • faultConversionService:默认注册了非常多常规的类型转换器,如Number -> String、String -> Collection ...,但是它并没有关于日期/时间、数字格式化方面的组件
  • DefaultFormattingConversionService:它在DefaultConversionService基础上增强(但不继承于它),增加了格式化相关的内容。如支持:Date、JSR 310、数字钱币百分数等格式化相关内容

虽说Spring内置的转换器/格式化器能“应付”绝大部分场景,但不免有时候我们依旧需要DIY。通过前面的学习我们知道了,向注册中心注册格式化器/转换器的方式多种多样,能否降低使用者门槛提供一种较为统一的编程体验呢?有,它就是今天的主角:FormattingConversionServiceFactoryBean。

FormattingConversionServiceFactoryBean

一个工厂类,用于产生FormattingConversionService实例,设计它的目的是方便的集中化配置它。

在这之前,小复习一下:FormattingConversionService实现了FormatterRegistry接口,并且继承自GenericConversionService,所以功能上它是DefaultConversionService的超集。一般来讲,我们常说的ConversionService转换服务底层实现使用的就是它(的子类),区分如下case:

  • 在Spring Framework环境下,其子类 只有 DefaultFormattingConversionService(默认有很多格式化器/转换器,支持JSR 310、数字格式化、格式化注解等)
  • 在Spring Boot环境下,其子类还有 ApplicationConversionService和WebConversionService
  1. ApplicationConversionService不继承于DefaultFormattingConversionService但功能强于它:表现在额外增加了更多转换器,且能够从容器里自动检索出Converter/Formatter类型的Bean然后注册上去
  2. WebConversionService继承自DefaultFormattingConversionService,并且增强了对JSR 310的更强支持。在Spring Boot的web环境下,该实例取代了通过注解 @EnableWebMvc/@EnableWebFlux默认指定的转换服务实例

(编辑:四平站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读