加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

Registrar倒排思想送给你

发布时间:2021-04-11 17:14:27 所属栏目:评论 来源:互联网
导读::从AnnotationFormatterFactory的泛型类型中提取到注解类型。注意:若没有指定泛型(没有指定注解类型)就抛出异常②:该工厂类支持的类型们③:对于支持的每个类型,均注册一个Printer/Parser 重点在于步骤③,AnnotationPrinterConverter和AnnotationParser

:从AnnotationFormatterFactory的泛型类型中提取到注解类型。注意:若没有指定泛型(没有指定注解类型)就抛出异常②:该工厂类支持的类型们③:对于支持的每个类型,均注册一个Printer/Parser

重点在于步骤③,AnnotationPrinterConverter和AnnotationParserConverter均是一个ConditionalGenericConverter转换器,底层实现实际委托给AnnotationFormatterFactory去完成,所以说对AnnotationFormatterFactory的理解格外的重要,还好上篇文章对它已经做了详尽分析,点击这里电梯直达。

下面以AnnotationPrinterConverter为例观其源码:该转换器只负责将fieldType类型转换为String类型②:只有fieldType上标注有指定的这个注解,此转换器才会生效③:转换逻辑。这种缓存式处理逻辑很是常见,其实最核心的代码往往只有一句,本处就是它:this.annotationFormatterFactory.getPrinter(...)。获取到合适的Printer,然后适配为PrinterConverter从而完成最终的convert转换动作

❝说明:PrinterConverter和ParserConverter在本系列前面文章已介绍,相关内容可出门左拐在本系列内很容易找到❞AnnotationParserConverter的实现逻辑如出一辙,这里就不再啰嗦了。

FormattingConversionService它实现了FormatterRegistry接口的所有接口方法,但是它并未提供一些默认行为。换句话讲:实现了所有的组件注册/管理的能力,但并没有“帮你”注册任何组件,所以还不具备能够直接提供服务的条件,若要使用还需“人工干预”放些组件进去才行。

一般来讲,对于这种情况一般在外部再包一层 DefaultXXX来提供默认服务是一种对开发者十分友好的解决方案,Spring也是这么干的,下面来看看DefaultFormattingConversionService为我们默认注册了哪些基础组件,提供了哪些能力呢。

DefaultFormattingConversionService

默认的格式化器转换服务,该默认行为适用于大多数应用程序对格式化器、转换器的需求。

继承自FormattingConversionService,这个默认行为是为该实例而设计的,但为了方便使用,它对外暴露了其static静态方法addDefaultFormatters(),这个设计方式同DefaultConversionService暴露了静态方法addDefaultConverters()如出一辙。

默认注册了哪些组件?

对于一个默认的Service服务,最关心的当属它提供了哪些能力。换句话讲:它默认帮我们注册了哪些组件呢?

要回答这个问题可不能靠“背答案”,方式方法其实非常的简单,爬进去它

(编辑:南通站长网)

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

    热点阅读