00:00
各位,下面呢,我们继续来学习spring框架的新功能,刚才我们讲到两点,第一个它本质上的一个特点,基于JK8与这建筑JDK9,另外它自带了日志的封装,咱们整合了law for to的这为日志,然后咱们继续往下看看它的其他的新的功能,咱下面看第三部分,还是打开它的文档,第三部分咱看这个地方叫核心容器,就是它里边呢给我们做了很多处理,首先咱看第一部分就是它支持看这个啊,一个叫now able注解,另外它支持一个叫函数式风格的这么一个编程,同时它下面部分就针对是那个s spring l VC部分,咱们课程中重点关注损部分,那下面把这个部分给各位演示一下,咱先看第一个,就是它支持那able这个注解,我说一下这个是什么意思。给各位做一个描述啊,咱们看它的第三个新的功能。
01:01
就是这里边我写到。此五框架。它的这里边的核心容器部分支持这个。那able这个注解,这是它里边的第三个这么一个新功能,那这功能这里提到这个词轮框架中支持这个注解,那这个注解是什么意思呢?给各位来说一下,关于这个叫那able这个注解。那我来说明。我强调啊,这个注解表示什么呢?我说明首先这注解呢,你可以使用在你的。方法上面可以使用在你的属性上面,另外可以用在你的这个参数上面,它表示什么?就是你这个方法里边的返回值。可以为空,如用在属性上面,那属性值可以为空,如果用在参数上面,那你的参数值可以为空,这个叫那A不注解,如果说你不加注解,比如说有时候为空,可能会报一个控制针的异常,那我现在加这注解之后,它就表这些值可以为空,那什么意思?给各位看一下里边几个具体效果啊,咱看一下啊,比如说咱就直接看一下齿轮的源码中,通过里边找到它里面关于这个写法。
02:29
那比如说咱找这个地方啊,大家看这是咱们之前说那个vation contest,比如现在我把这个给它源码打开。大家看里边咱就见到这个注解叫now able,那我们看啊,现在你看这个注解它是用在什么地方。是方法上,那就表示我现在这个方法的返回值可以为空,这是它的第一个特点,用在方法上,那就表示方法的返回值可以为空,然后把这个给各位截过来啊,就是现在比如说我放到这位置第二个。
03:08
就是这个注解。用代。方法上面那表示方法的返回值可以为空,就是咱看到的这么一种效果用在方法上,另外呢,这个也可以使用在我们那个参数或者属性上面,那比如说咱也是再找一个啊,现在我把这个类打开。按照这里边看一下啊。大家看在里边这个地方,你清楚看到它现在用在什么地方,是不是你方法的参数里边呀,那正用的话,它表什么意思,就表示你现在方法这个参数可以为空,这是它的第二个特点。小位置啊注解使用在我们的方法的参数里边,那就表示你这个方法的参数。
04:00
可以为空啊,这是第二个特点,另外还有下一个,它可以用在我们的属性上边,那什么意思啊,这最好理解,比如现在我在里边呢,我随便写一个属性,然后来一个private string,我叫这个book name。然后在属性上边,比如加这个叫那able这个注解啊,注意是词里边这个注解,那它就表示你这个属性值可以为空,这是它的第三个地方。给各位写一下啊,注解使用在属性上边,它表示属性值可以为空,所以这是我们说的子润五五的容器中知这个叫那able注解把这个给各位,这个说明你知道这个特点,它就表示你这些值可以为空。啊,这个哈,我们就介绍完了,关于它的第三个主要的新的功能,然后除了这个之外,咱来看它的下一个新的功能,就是里边的第四个,然后第四个给各位说什么呢?等到里边找一下各位看啊,就里边这句话,就是它支持什么函数式风格,这个做法,就是咱之前说那个DAK8中是不是有一个叫拉姆的表达式,在我们现在,因为它本质上就是基于这个JT8做的一个操作,所以它里面也支持那种拉姆的表达式做法,那我把这个给各位也做个演示。
05:28
我想这个位置。五它的核心容器里边支持这个函数式风格的这么一个做法。比如说支持那个拉姆的表达式相关的这个操作,那这个什么意思?给各位通过一个例子咱们来演示一下。啊,咱就看一下它这个新的这么一个功能,那来演示,那怎么演示,给各位来做个说明。比如咱们现在啊,我这里边呢。
06:01
我在这个位置,假如我现在我再来创建一个类啊,再重新创建一个,比如这个类我就叫。User这个类,那比如现在我想做功能,我想把user类的对象进行创建,就是通过文的方式进行创建,那怎么做?咱之前都学过第一种方式,你在配置文件中进行配置,或者说你加上注解。把它是不是能创建,而创建之后这个过程就是由瑞就做到,当然各位注意啊,比如说现在啊,我这对象,我直接自己把这对象扭了一下,会注意这个特点啊,包括之前如果有同学不理解,现在我再解释一遍,咱现在如果说你自己啊,手动去这个对下,比如现在我写一个问方法,在问方法中我现在new这个。右侧对象。各位注意啊,你这么写的话,这对象确实是创建了,但这对象创建之后spring是不知道,就是在润里边呢,它并不是由死人做到的,是你手动new的,所以咱需要把这对象在润里边是不是进行注册呀,因为咱之前不按是配置文件和注解方式,就是由死润里边做到的,建立自己new的话,这对象死人并不知道,所以你不能在死人中做操作。所以下面给大家说另一种方式,就是咱们现在其实我可以自己牛对象,但你牛完对象之后,需要把这对象在死润里边进行注册,或者说它的IOC容器中进行注册,当你注册之后,他才会交给S进行管理,如果你不注册,那S是不能管理你这个对象的,那下面给各位来说这个该怎么去做。
07:45
给各位啊,我来做个说明。那怎么做呢?比如现在我在这个位置呢,给大家我就再来写一个。方法,然后这个方法按照我刚才说的,咱就用这种叫做函数式。
08:01
风格来创建这个对象,把它交给这个spring进行管理,那我们看怎么来做啊,比如现在我给你方法起个名字,我们就叫这个名字。叫test的general application context啊,就是它,然后在里边,现在我们来做这操作,那怎么做呢?在里边呢,首先你要用这种函数风格。在他的新闻中写到,他支持有这么一个对象,叫general application context,那我们的做法就是第一步你先创建。General application contact这么一个对象,就是把它我们先new一下,那比如现在我们来new这个对象。这是第一部分,然后拟完对象之后,第二步你需要调用这个context里边的一个方法。然后进行你这个就是对象的这个注册啊,就是注册里边这个操作,那我们调一个方法叫refresh,注意啊叫refresh,它表示把你内容清空,然后里边要进行注册,这是第二部分,然后第三部分咱就开始做注册过程,那怎么做,在康泰中有个方法。
09:20
大家看这个方法。叫什么?B就是表示把你的对象在里边进行注册,而在这里边呢,支持多个参数,那这方法咱可以打开看一下。大家看这方法啊,我给他比如说给他打开,然后你看里边有多个参数,然后现在我们来看里边方法中,你看这参数中加了这个注解给咱说过。什么意思啊,就是可以为空啊,那现在我来写一下怎么做呢?首先里边你可以写上你要创建对象类型的class,因为咱是这个user,然后在后面可以加上一个拉姆的表达式的形式,再加一个,然后把我们的对象,也就是直接。
10:05
溜出来这个user对象,这样的话就会把我们new出来的user对象在spring里边完成这么一个注册,这一步就可以做到,所以这是啊,我们用。润五的新功能,通过拉姆的表达式,把你的对象在里边做注册,咱实际中呢,虽然咱一般不会这么去写,但是通过它大家感受一下子润五的这个进的功能。然后这个做到之后,咱下面第三部分。可以获取一下你在里边注册的那个。对象,因为对象在new肯定能创建,但是此文里没注册,现在要给它注册进去了,那怎么做?用咱们之间的方式,contest.get b。然后在里边注意啊,这个位置呢,咱并不是加上一个对象的名字,因为这个名字我这里边没有指定,不像咱之前用注解的时候,它的名字是类的首字母小写,目前它不是,比如现在我们这么试一下,看它能不能得到。
11:10
比如现在我先这么写啊,刚才我提到这么做应该是得不到的,我把它这个输出user。你看我现在根据你类名的首字母小写,咱看这对象能不能得到,那我们来执行一下啊。大家看。是报错了,他说什么没有这个名字的B,就是这个名字找不到,因为他现在不是根据小写进行注册的,因为你没有指定,那咱可以怎么得到两种方式,第一个你可以写上你的那个类的一个全路径,就是它的包类路径,因为咱的类在这个包里边,那我把它的全路径。拿过来,然后点上一个user,咱把这方法再做个执行,咱看一下这个能不能得到。然后大家看。
12:01
对象是不是得到了,输出了它的地址,所以这时我们通过润五的新功能,基于这个拉姆的表达式方式,把我们的对象创建,并且在润里边容器中进行这么一个注册,啊,这是它的一个写法,各位把这知道,然后这个代码咱可以进一步的优化,因为刚才我这里边我说根据小写名字得不到,但是其实咱们可以指定它的名字是什么,那怎么写?咱看一下啊,就是我们用到里边的第一个参数,这个参数叫b name,这个值可以为空,但也可以不为空,它就是指定你那个获取的名字是什么,比如现在我给他指定一下啊,这名字,假如我给他起个我就叫USER1啊,咱为了区分。然后这个取完之后,咱现在就能根据这个名字把这对象获取一下,里边我就叫这个user。一啊,咱为了区分,然后这样的话,你看名字指定了,那我现在把这个代码我们再做一个执行来看效果。
13:06
对象是不是得到了,所以这个啊,就是死人五里边一个新的功能,它叫做函数式分割创建对象。并接把对象交给瑞进行这么一个注册,然后最终文里边能完成对应的功能,就这过程也是由死文经管理啊,这个啊四文中的一个新的功的。函数式风格的一个操作,各位把这给它也是了解一下啊。在这个新功能我们做了一个说明。然后这个说完之后,咱们继续往下来看,下面部分呢,是基于这个MVC部分,就是它的外部操作,咱们课程重点关注损部分,然后咱看最后一部分关于他的新的功能是什么,就是他测试方面的一些相关的改进,那咱最后来说测试,就是现在给各位说这两部分,第一个就是这个。那able这个注解表示可以为空,第二个就是函数式风格,咱用这个general contact用这个拉的表示方式,可以把你创建对象在spring里边完成一个注册,各位把这两个特性先给他知道。
14:16
然后咱们马上来演示他关于测试方面的一些改进。
我来说两句