zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

springMVC4(11)使用注解完成数据格式化

数据 11 完成 注解 格式化 使用
2023-09-14 08:57:15 时间
div >在实际开发中,我们会常常遇到需要对日期格式、数值格式进行转换的需求。在spring中,我们可以轻松通过注解的方式完成对数据的格式化处理,比如现在有个User POJO类:
package com.mvc.model;


public String toString() { return "Person [name=" + name + ", birthday=" + birthday + ", salary=" + salary + "]"; }

我们希望通过上面两个注解,将birthdat如1995-01-01的字符串形式与java.util.Date的日期形式相互转换,将salary如15.000K的字符串形式与Long型的15000相互转换。
为了完成我们的需求,我们需要先了解如下知识。


//通过此方法获取(也能理解为设置)哪些属性类可以被注解A标注 Set Class ? getFieldTypes(); //获取特定属性的格式化输出器 Printer ? getPrinter(A annotation, Class ? fieldType); //获取特定属性格式化输入(解析)器 Parser ? getParser(A annotation, Class ? fieldType); }

继承自ConversionService,运行时类型转换和格式化服务接口,提供运行期类型转换和格式化的支持。
其对应存在一个工厂类FormattingConversionServiceFactoryBean,我们也可以通过其注册自定义转换器。它的地位相当于我们上一篇文章提到的ConversionServiceFactoryBean。我们将其装配在的conversion-service属性中。下面是我们的实例配置:


 !-- 通过:annotation-driven的conversion-service属性来装配我们的类型转换器 -- 

 mvc:annotation-driven / 

 bean

 id="converters" !-- 在属性converters注册 -- 

 property name="converters" 

 list 

 bean / 

 /list 

 /property 

 /bean 

注册完后,我们即可进行我们的web测试:


启动服务器,我们在游览器中访问:
控制台对应输出: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
控制台对应输出: