00:00
下边呢,我们就具体来看一下这个数据类型的转换,那刚才看源码的时候啊,我们已经看到,实际上VC上下文内建了很多内置的转换器,他们可以完成大多数Java类型的转换,所以说一般情况下我们是不需要来定义这个类型转换器的。所以说本节内容呢,大家做一个了解就可以了。好的,看一看如何来。创建自定义的类型转换器呢?哎,前面我们讲到了这个conversion service,我们可以利用conversion service factory bin在spring LC上下文里边来创建一个converse service。好的,又看到了一个什么呀?叫conversion service factory bin是吧?我们在做项目的时候,我们会经常看到有对应的factory bin去整合第三方组件,比方说整合那个local session factory bin。
01:05
比方说整合cos的那个factory bin。好吧,注意这个factor bin,然后呢,我们可以通过conversion service factor bin的converts来注册自定义的类型转换器。好,下边的问题就是如何来定义一个类型转换器,哎,Spring mvc支持以下三种类型,我们就直接看第一个了哈,它可以把原类型转为目标类型。然后在不MV上下文里边啊,搞这个conver。Service,再把service给到mvc nottation drive的service这样的一个属性就可以了,OK,上面呢是我们一个分析,下面我们来具体实现一下。这个断点呢,我给它清一下哈。然后我只留一个第107行,107行,目标就是想看一下我们这个班,就是我们自己搞这个微型转换器啊,是不是进来了。
02:10
好的,我们的需求是什么样呢?我们的需求我这样来写。还是来用这个input,以前啊,我们想进行这个,呃,进行入住的话呢,我们需要去填这个表单,其实挺麻烦的,我现在想写一个类型转换器,可以把一个字符串转化为一个employee对象,听到了吧,把一个字符串转化为一个employee对象,于是我来写上这样的一个。边看看效果边写一个form。Action,我就直接去conver service里边的coworker method post,好的employee input。
03:12
Yeah。Name。Employee,我要把这个employee字符串直接转成一个employee对象,格式啥样呢?格式这样,我们看一眼哈,格式是last name email,真的department过来,格式last name。横线email。横线。真的横线department.id吧,就说这个ID啊,你得有我们直接传一个ID进去可以吧。啊,还有一个真的。啊,这就写了是吧,12345ID是没有的。
04:03
1234没问题,那这样的一个格式一传啊,例如什么样呢?这样比方说啊,GG横线,GG硅谷点com横线。ID,这个ID都有几呀,需要看一眼哈。ID呢啊一一直到105,那我就写一个105。中间插了一个真的,哎,比方说写个零好的,这样写完之后呢,我们就会看到数据库里边有对应的记录传进去,当然我们这个数据库是模拟的了,好吧,那我们来看一下我们的目标方法,这个方法呢。我需要来写一个spring。Taste。
05:03
Spring mvc test。艾特,Controller。Public哎么呢,我还那个emps。String形写错了哈,At request mapping来好的传的参数request。Peril。ADD。Request,我传的参数是个什么呢?是一个employee,注意到这个employee实际上是一个字符串吧,然后过来我这边对应的却是一个employee对象,好,我要执行一个保存操作。
06:05
Employ employ at auto好了,执行添加employee DAO。点self employee。打印一下吧,She's out。Employee。Save,现在这么跑的话肯定是不通,为什么呀,你这块是一个字符串,它怎么能够自动的转化成employee呢?只是这个架子搭好了,下面我们来写这个什么呀,写这个转换器converts cons,好的,我们需要建的这个转换器呢,需要。
07:03
实现这个convert接口。我们写这个名叫employee converter接口。Convert是吧?搞对了哈,里边儿的。原类型string型,目标类型employee类型CL o at,我给它加到什么呀?加到我的IC容器里边component。添加方法好了。S是一个string形,我来写一下哈,如果S不等于空。然后呢,String过来看,Values等于source.split哎,我们说是使用。横杠进分割吧。
08:02
复制一份,复制它吧。Can。在这儿。分割之后呢,应该是含有四个元素,那如果values不等于now,而且values.values.lis刚好等于四的话。那我就开始第一个叫string last name等于value,注意看零对吧?第二个string email等于VALUES1第三个。Gender,这个gender呢,需要转一下,Gender等于values。二。ag.proceed。下一个department传的呢是一个ID,于是我直接创建一个department对象。
09:08
哦,我好像是可以给他。来吧,Department对象吧,Department等于new department。实际上我们也可以干什么呀,也可以把那个。把那个department给它进来是吧,我们这块我们这样写也可以set ID,注意values。三好了,搞到一个employee employee等于new employee。Now name email,真的department,搞定好,Return employee,如果没有问题的话,就把这个employee给返回可以吧?这个就写完了,我写一下。
10:02
看what?两边。前边呢是south。后边呢,是我的employee写完,然后我需要把这个。配置到我的那个转换器体系里边,我得搞到我的配置文件。过来。看。Water。Conversion吧,Conversion service通过什么配啊,通过那个叫conversion service factor b对吧?B ID class worseseversson service factory都是他。
11:09
起个小名,Ctrl c ctrl a,不对哈,CTRLV。C,哎,它有一个属性叫property,叫convert,这个converts是个什么类型啊。是个set类型,那于是呢,我就把这个set给他。加进来,在这里边我们可以搞到一个一个的reference b ctrl v第一个字母,哦,不是它是吧,这个里面。我的employee呢?这个第一个字母小写CTRLC回来。E小写搞定,然后我需要把它注到我的这个mvc drive的convert service这个属性里面写完。
12:04
现在就可以看效果了,我们继续用debug。A,好的,诶,注意JC横线。cz163.com注意零,注意105。哎哟。忘写summit了。CTRLC。白整了哈。在这吧,那干脆我把这个直接复制过来,CTRLC。刷新来看效果。我这个页面写的不对,不过呢,我们看到这个转换是成功的是吧,你看原类型目标类型,然后呢,添加也OK。
13:05
我这个转换失败的话呢,我应该是少写了一个employees,下边没有E没有没有EPS写错了是吧,这应该是这样写过来写成什么呀,Redirect这样写对吧。再走。刷新。这里边呢,这个GD已经进来了,我新加一个。再看一遍。CTRLV,好的。JC。JJ。找一个,诶,我们看到这个添加完全是可以成功的,那么实际上。我天录的是一个。豆腐串。
14:00
对吧,那这个字符串。怎么会转化成一个employee对象呢?靠的不就是我们这个转换器吗?好的,我们看一眼,我们要是这个转换器加进去,以前那个转换器还好用吗?我直接。回退直接点summit,看我代码往回扫。以前的转换器还好用吗?啊,我们看到有一个班,我把这个班打开。打开去找我们的。Conversion service。真的。班有一个conversion service看到了吧,诶。我把这个往上拿,哎,我们看到以前的很多转换器还在是吧,往后翻上有我们的吗。
15:05
我们新注册的叫什么at硅谷?Employee。Convert在哪呢?在这看到了吧,String形转化为employee,那实际上用的是employee convert,而以前的还一样好用,OK,这个呢,就是我们自定义的类型转换器,本节内容啊,大家做一个了解就可以了,具体步骤呢,PPT大家可以参看一下,你也可以把这个例子给教一下好吧。
我来说两句