弹簧引导中怎么用转换接口实现类型转换器

  介绍

本篇内容主要讲解“春引导中怎么用转换接口实现类型转换器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“春引导中怎么用转换接口实现类型转换器”吧!

<编辑类="目录">目录 <李>

使用转换接口实现类型转换器

<李>

转换器接口

<李>

添加依赖

<李>

实体类

<李>

1.用户类

<李>

2。文章类

<李>

配置类型转化器

<李>

1。定义全局日期转换器

<李>

2。定义全局对象转换器

<李>

3。定义全局列表类型转换器

<李>

控制器

<李>

测试

<李>

转换器使用及其原理

<李>

配置文件中对转换器的引用

<李>

以字符串去空为例

<李>

我们查看转换器接口的源码

<李>

我们查看对应的成员变量:

使用转换接口实现类型转换器

在Spring3中引入了一个转换器接口,它支持从一个物体转为另一个对象。除了转换器接口之外,实现ConverterFactory接口和GenericConverter接口也可以实现我们自己的类型转换逻辑。

转换器接口

首先看看转换器接口的定义

public  interface  Converter<年代,T>, {,,,,,,   ,,,T 转换(S 源),,,,,,   }

可以看到这个接口是使用了泛型的,年代表示原类型,T表示目标类型,然后里面定义了一个转换方法,将原类型对象作为参数传入进行转换之后返回目标类型对象。

下面在春天引导中使用转换器接口来实现将字符串类型分别转换为数据,自定义对象和List<自定义对象祝辞。

添加依赖

添加spring-boot-starter-web依赖

& lt; dependency>   ,,,,,,,,,,,& lt; groupId> org.springframework.boot   ,,,,,,,,,,,& lt; artifactId> spring-boot-starter-web   ,,,,,,,& lt;/dependency>

实体类

1。用户类
public  class  User  {   private 才能;long , id;//才能用户名   private 才能;String 名称;//出才能生日期   private 才能;Date 分娩;//关才能联用户   private 才能;User  linkUser;//才能喜欢的文章   private 才能;List< Article>, favArticles=new  ArrayList<在();   ,//下面省略Getter和Setter方法
2。文章类
public  class  Article  {//才能文章id   private 才能;long  artId;//才能文章名   private 才能;String  artName;   ,,   ,//下面省略Getter和Setter方法   }

配置类型转化器

下面三个类都需要添加@ component注解,否则不能生效。并实现春提供的org.springframework.core.convert.converter。转换器接口,重写其中的转换()方法,方法中写自己的转换逻辑。

1。定义全局日期转换器
@ component   public  class  DateConvert  implements  Converter<字符串,Date>, {//日才能期格式   自卫队,SimpleDateFormat =new  SimpleDateFormat (“yyyy-MM-dd");   @Override才能   public 才能;Date 转换(String  s), {   ,,,if  (s !=null&及!““.equals (s)) {   ,,,,,try  {   ,,,,,,,//解析参数   ,,,,,,,Date 日期=sdf.parse(年代);   ,,,,,,,return 日期;   ,,,,,},catch  (ParseException  e), {   ,,,,,,,e.printStackTrace ();   ,,,,,}   ,,,}   ,,,return 零;   ,,}   }
2。定义全局对象转换器

这里使用杰克逊的objectmap类的readValue()函数实现将Json字符串反序列化为Java对象

@ component   public  class  ObjectConvert  implements  Converter<字符串,User>, {   @Override才能   public 才能;User 转换(String  s), {   ,,,ObjectMapper  objectmap=new  objectmap ();   ,,,if  (s !=null&及!““.equals (s)) {   ,,,,,try  {   ,,,,,,,User 用户=objectMapper.readValue(年代,User.class);   ,,,,,,,return 用户;   ,,,,,},catch  (JsonProcessingException  e), {   ,,,,,,,e.printStackTrace ();   ,,,,,}   ,,,}   ,,,return 零;   ,,}   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

弹簧引导中怎么用转换接口实现类型转换器