SpringMvc-请求入参 绑定转化过程

1. 转换器接口

Spring定义3种类型的转换器接口,实现任意一个转换器接口都可以作为自定义转换器注册到 ConversionServiceFactoryBean 中

  1. Converter<S,T>:将 S 类型对象转为 T 类型对象
  2. ConverterFactory:将相同系列多个 “同质” Converter 封装在一起。如果希望将一种类型的对象转换为另一种类型及其子类的对象(例如将 String 转换为 Number 及 Number 子类(Integer、Long、Double等)对象)可使用该转换器工厂类
  3. GenericConverter:会根据源类对象及目标类对象所在的宿主类中的上下文信息进行类型转换

2. InitBinder注解

@InitBinder标识的方法,可以对WebDataBinder 对象进行初始化。WebDataBinder 是 DataBinder 的子类,用于完成由表单字段到 JavaBean 属性的绑定

lastName的字段不进行数据绑定,另作处理

@InitBinder
public void initBinder(WebDataBinder dataBinder){
  dataBinder.setDisallowedFields("lastName");
}

3. 数据的格式化

Spring 在格式化模块中定义了一个实现 ConversionService 接口的

FormattingConversionService实现类,该实现类扩展了 GenericConversionService

因此它既具有类型转换的功能,又具有格式化的功能

拥有一个 FormattingConversionServiceFactroyBean 工厂类,后者用Spring 上下文中构造前者,FormattingConversionServiceFactroyBean 内部已经注册了

NumberFormatAnnotationFormatterFactroy:支持对数字类型的属性使用

@NumberFormat注解

JodaDateTimeFormatAnnotationFormatterFactroy:支持对日期类型的属性使用

@DateTimeFormat 注解

装配了 FormattingConversionServiceFactroyBean 后,就可以在 Spring MVC 入参绑定及模型数据输出时使用注解驱动了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值