springMVC4(11)使用注解完成数据格式化
来源:互联网 发布:淘宝网大衣外套 编辑:程序博客网 时间:2024/06/16 18:50
需求实例引入
在实际开发中,我们会常常遇到需要对日期格式、数值格式进行转换的需求。在spring中,我们可以轻松通过注解的方式完成对数据的格式化处理,比如现在有个User POJO类:
package com.mvc.model;
import java.util.Date;public class Person { private String name; @DateTimeFormat(pattern = "yyyy-MM-dd") private Date birthday; @NumberFormat(pattern = "#.###k") private Long salary; //ignore getter and setter @Override public String toString() { return "Person [name=" + name + ", birthday=" + birthday + ", salary=" + salary + "]"; }}
我们希望通过上面两个注解,将birthdat如1995-01-01的字符串形式与java.util.Date的日期形式相互转换,将salary如15.000K的字符串形式与Long型的15000相互转换。
为了完成我们的需求,我们需要先了解如下知识。
AnnotationFormatterFactory接口
它使我们的注解与属性类型关联起来。它的定义如下:
public interface AnnotationFormatterFactory<A extends Annotation> { //通过此方法获取(也能理解为设置)哪些属性类可以被注解A标注 Set<Class<?>> getFieldTypes(); //获取特定属性的格式化输出器 Printer<?> getPrinter(A annotation, Class<?> fieldType); //获取特定属性格式化输入(解析)器 Parser<?> getParser(A annotation, Class<?> fieldType);}
FormattingConversionService
继承自ConversionService,运行时类型转换和格式化服务接口,提供运行期类型转换和格式化的支持。
其对应存在一个工厂类FormattingConversionServiceFactoryBean,我们也可以通过其注册自定义转换器。它的地位相当于我们上一篇文章提到的ConversionServiceFactoryBean。我们将其装配在的conversion-service属性中。下面是我们的实例配置:
<!-- 通过:annotation-driven的conversion-service属性来装配我们的类型转换器 --><mvc:annotation-driven /><bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean" id="converters"><!-- 在属性converters注册 --> <property name="converters"> <list> <bean class="com.mvc.convertor.MyConvertorFactory" /> </list> </property></bean>
注册完后,我们即可进行我们的web测试:
@Controllerpublic class PersonController { @RequestMapping("convert") public void convert( Person person){ System.out.println(person); }}
启动服务器,我们在游览器中访问:
控制台对应输出:http://localhost:8080/springMVC/convert?name=myName&birthday=1995-01-01&salary=5.000k
Person [name=myName, birthday=Sun Jan 01 00:00:00 CST 1995, salary=5]
从这里我们看出,成功完成了请求参数到User对象属性的格式化转换。
另一方面,如果我们想单独使用格式转化器,也可直接在方法入参中使用注解,看下面实例:
@RequestMapping("convert2")public void convert2(@DateTimeFormat( pattern = "yyyy-MM-dd") Date date,@NumberFormat( pattern = "#k") Long salary ){ System.out.println(date); System.out.println(salary);}
启动服务器,我们在游览器中访问:http://localhost:8080/springMVC/convert?name=myName&birthday=1995-01-01&salary=50k
控制台对应输出:
Sun Jan 01 00:00:00 CST 1995
- springMVC4(11)使用注解完成数据格式化
- SprringMV数据格式化注解
- SpringMVC4使用@ResponseBody注解实现JSON自动转换错误
- springmvc4整合AJAX使用@ResponseBody注解返回JSON数据格式
- springmvc4整合AJAX使用@ResponseBody注解返回JSON数据格式
- 使用注解完成事务控制
- SpringMVC添加自定义注解格式化数据
- spring-mvc注解式格式化属性数据
- SpringMVC的数据格式化-注解驱动的属性格式化
- 使用格式化显示数据
- 使用过滤器格式化数据
- 使用Formatter格式化数据
- springmvc4+springmvc4+hibernate4事务问题(全部都是用注解)
- springMVC4使用websocket
- springmvc4使用websocket
- springMVC4使用websocket
- springMVC4使用websocket
- 使用Spring注解完成Bean的定义
- 在一个窗口显示多个视频子窗口
- ADB基本命令
- iOS序列桢动画创建方式
- MFC——ComBox用法大全
- 编译mysql5.7.11的Qt5.6驱动QMYSQL
- springMVC4(11)使用注解完成数据格式化
- 垃圾回收算法
- hdoj 1426 Sudoku Killer
- request.getParameterMap()
- STL与泛型编程<十五>:预定义的仿函数和仿函数适配器
- 正则表达式 Regular Expression
- C++程序形成过程
- unity official Networking tutorial总结
- MVC模式和URL访问