00:00
好啊,那么现在我们把这两个概念解释明白以后呢,接下来啊,我们就可以给大家去说一下我们刚刚用到的这个B的一个配置啊,给大家去做一个具体的解释,就是我们刚刚写的这个hello word啊呃,那么首先啊,要跟大家去明确一下,就是现在我们使用的这种配置方式啊,配置方式是什么样子的,就是我们是基于XL的方式,什么样的基于XL的方式啊,因为我们刚才给大家说过,它其实这个point它是一个组件化的,对不对,然后呢,它支持我们使用XM的方式来配置,或者说使用注解的方式来进行配置,那么首先现在我们要研究的是基于XM的这种方式,也就意味着我们会用到一个诶在X ma里面去做出各种各样的一些配置来,那么在后面的课程中呢,会给大家去说到这个基于注解的方式,诶,比如说在这个位置。啊,通过注解呢,来进行什么病的这个配置,这是我们后面要去给大家讲到的内容啊,那么首先现在呢,我们现在研究一下哎,就是我们现在基于X乱的方式啊,那么基于这个X方式的话呢,大家还要注意哈,我们是使用的全类名啊,就是这个全类名啊的方式来配置的啊,就是我们使用的是XL,并且呢,在XL里面我们使用的是一个什么叫做全类比,就是这个class啊,这个是我一个前提,大家必须得知道,那么接下来就来给大家去解释这个具体的一个病的这个配置啊,我们来看首先一个并它代表的含义是什么,知道什么是一个病吗?
01:49
啊,扎va病大家听说过吧?啊,那么先来解释一下什么是一个扎va病,我们经常说Java病,Java病,到底什么是个Java病?
02:03
类啊,简单理解是就是一个普通的类啊,对吧?哎,简单理解它就是一个普通的一个类啊,就是一个这个Java病啊,那么这个地方的病是什么意思呢?注意就是好受point管理的,哎,一个什么呀,Java病对象就是我们的一个病,理解了吧,就是你要把一个具体的一个Java病,比如说我们这个person交给我们这个死管理,那么它就表现出来的就是一个什么病,能听懂了吧,哎,表现出来就是一个B啊,那么在这个B节点里面,其实这个东西的话呢,我们理解不理解没有太大的一个关系了啊,但是我们需要注意的是它里面的两个配置,一个是ID,一个是我们的class,这两个是特别重要的,ID是什么意思呢?它就是我们B的,哎,唯一标识什么样的?
03:04
会一标识呢,就是在整个的这个LC容器中,它是唯一不重复的,听明白了吧,哎,就在整个的好,在整个的这个配置文件中啊,就是配置文件中,就是这个配置文件中,明白吧?啊或者说呢,整个的这个LC容器中啊,其实我们说的精确一点就是这个LC容器中了,为什么呢?因为我们将来是可以把这个配置呢,拆分成各种各样的文件的,那么大家想哦,虽然说你把它拆分成了多个文件了,但是呢,整体来讲的话呢,它们都是属于一个什么LC容器的,那么在这里面你出现了一个ID叫做什么呀?比如叫做A,这里面出现了一个A,单独看这个配置文件来讲,它没有任何问题,单独看它来讲也没有任何问题,但是呢,把他们当成一个LC容器来看,就出现问题了,理解了吧,所以说我们应该说的详细一点,更精确一点,就是什么呀,在整个的LC容器中。
04:04
好,唯一不重复,这就是我们的一个ID,当然它是可以什么随便去取名字的,只要你能保证唯一不重复就可以了,好,再来看下一个class,那么这个class指定的什么呀?指定我们这个Java命的全类名,那你说他拿到这个全类名有什么用啊,有什么用我。有啥用啊,串建对象对不对?OK,怎么串建对象啊,射反射是不是要用到反射了是吧?说这个地方注意了啊,它指定这个加宾的权限,你目的是什么呀啊,目的是好通过我们的反射创建我们的B对象好,创建我们这个对象好,那么现在大家注意我们来分析一下,呃,刚刚我们在这个地方,我直接从这个LC容器中就获取到了一个person这样的一个什么并对象,那么大家来想这个对象它到底是怎么帮我们创建出来的?
05:06
也就意味着我给了你这么一个字符串以后,你能不能把这个对象给我串联出来,如果让你来做的话,你能把这个代码写出来吗?简单吧,很简单吧,对吧?来简单的实现一下啊,我给了你一个这个全类名了,那么你要做的事就是什么呀?诶,对了,Class讲for name,然后呢,把你的全类名写进来,那么写进来以后呢,我就拿到了一个class对象是这样的吧,然后呢,我再借助1CLASS点牛好,那么这样的话呢,我是不是就可以拿到一个具体的对象了,好,它返回的是一个哦这样的对象了啊OBGO,那么这个对象不就是我们创建出来的对象了,理解了吧,所以说呢,你给一个这个class的目的是什么呢?就是通过全类名反射的方式来把它什么对象创建出来,好,那么既然我们能分析到它会使用这种方式来创建对象,那么我们在这个地方就得需要注意一个问题,啥问题啊诶。
06:17
你必须得提供一个午餐过道器,为什么这么说呀,因为这个方法是不是会默认调用无餐过道器的,对吧?哎,因此这个地方我们要给大家去说的就是一定要注意什么呀,提供好我们的必须好提供无参数的构造器啊,无参数构造器好,这是我们必须要给人家提供的,那么现在我们就来测试一下,那假如说我在这个破损里面,我给你去提供上一个构造器,这是一个无参数构造器板,让大家来看这个地方是不是也没有任何问题啊,然后呢,我们来测试下,大家来看这个效果。好,它也是没有任何问题的啦,好,但是假如说我回到这个P里面呢,我给你加上了一个构造器,加上了一个参数,比如说我把这个name写进去了,也就意味着这个东西是不是有有参的了,它有了以后无差的还有吗?没了,那么再回到这个地方,你来看一下是不是已经开始报错了,对吧?而且这个报错信息告诉你什么呀?来点到这个叉上面,他告诉你没有一个constructor,为了什么0ARGUMENT,也就意味着人家告诉你了,我找不到一个零个参数的构造器。
07:30
是不是啊,所以说这个是我们需要注意的问题啊,好,那我再回来把这个案改回去,改回去了以后呢,我们再回到这个地方,你看一下还有那个错吗?没了。听明白了吧,OK,好,这是我们病的一个配置解释,好,那么接下来我们顺带的就把它里面用到的这个property也给大家解释一下,大家现在能理解这个property的作用吗?他干了什么事?是不是给我当前创建出来这个并对象的这个属性赋一个值啊,对吧?说白了这个pro的作用就是什么呀?哎,给我们对象的啊属性什么呀,赋值啊,怎么赋值的呢?怎么复制啊,那么就我就要去研究它的这个name跟我们的value name是啥意思啊?哎,指定我们的属性名,好value轴的属,哎,那就是指定我们的属性值了,是不是这个意思啊?好,来吧,那我就来问大家一个问题,这里面谁是属性,哪个这个。
08:42
嗯。是他吗?他有属性啊,啊是属性吗。确定吗?确还确定吗?确定还确定是吧。
09:05
它叫做成员变量,你一定要去理解这个属性是什么,能能听懂吧,属性是什么呀,对象的是对象的属性啊,对不对,那么注意了哈,这个地方如果我们严格来讲的话,这个写到这个private string name,它不叫做属性,而它是一个成员变量,能明白吗?能听懂这个意思吧,那谁是属性啊。谁属性啊?我告诉你这个是属性,S后面的那个才叫做属性,为什么这么讲呢?因为你从Java的这个底层反射这个角度来讲,如果你想操作对象的属性,你是不是要操作它对应的那个赛的方法,对能不能解,而对于这个赛的方法来讲,它我要操作的是谁呀?
10:03
我要操作的是他啦,所以说你看你叫什么名字,跟我这个方法有关系吗。有吗?好多同学想,那肯定有啊,我通过你这个成员变量要生成概率赛的方法啊,但是你从这个编码的角度来讲,这个方法我是可以随便写的吧,对不对?那比如说我现在写个S内二,我能不能通过这个方法给你的这个成员变量赋值,可不可以啊,完全可以,所以说我告诉你谁是属性呢?是赛程后面的这个架构才叫做属性,而现在你看,当我把它改成S内二以后,你再回到这个地方看看有没有出错。了错了,为什么错了呢?来你看一下,他说什么,看这个错啊,他说什么,他说我找不到一个方法for什么呀,Property name,他会找name吗?他会找你的这个name吗?不找,他找的是什么呀?他找的是你这个地方写的它所对应的那个S方法,也就意味着S后面出现的这个值才是我这个地方要去指定的值。
11:19
那么你来看我现在叫做什么set内二了吧,好,那我就把它改成name two,看到没有,同样没问题,而且这个效果依旧是可以用的。看到没看明白了吗?哎,所以说大家注意了哈,一定要理解什么是属性,什么是成员变量,这完全不是一个概念。听懂了吗?OK,记住了啊好,那我就先从这个这个角度来给大家去说一下,这个位置我们一定要注意指定的是什么呀?是赛风格的那个属性名字,理解了吧,哎,可不是指定你的成员变量啊,指定谁呀?指定赛风格的这个属性名,听明白了吗?可不是你那个成员变量啊,但是啊啊,其实大家刚才说的呢,也没有太大的一个问题,为什么呢?因为正常情况下,我们的这个S方法,Get方法都是根据这个成员变量来自动生成的,是不是?所以说呢,一般情况下,你的属性名字其实跟你那个成员变量的名字是一样的,因此呢,我们也就。
12:30
直接把它叫成一个属性了。对不对,所以说从这个,呃,严格意义上来讲,你不能这么去叫,对吧,但是从我们这个编码的这个角度来说的话,因为我们就能保证你这个名字是一样的,因此我们也可以啊,把它叫成一个属性。听懂了吧?哎,就是你直接这么去叫没问题,但是如果你要严格区分的话,它绝对不是属性,它只是一个成员变量,而属性是site后面的这个,听明白这个意思了吗?OK,所以这个大家一定要注意了啊,OK,好,那么呃,回到我们这个破里面来讲的话呢,就是一定要注意这个位置指定的是谁呀?是你的这个他要找的是S的方法,理解了吧,他找赛的方法可不是去找你那个成员变量的,因此我们一定要保证你写的这个值要有对应的S方法才行。
13:22
听明白这个意思了吧,好,那么这就是我们诶给大家讲过的B的一个配置解释,现在这里面还有有疑问的地方吗?有没有同学有疑问的啊,嗯,那这个这好了解释一下啊,同学说那你这个是N是大写的,那我这个地方是不是也要写成大写的呀,注意不对,理解吧,为什么呢?你注意哈这个问题,S就是我们这个方法的名字,在Java中我们是要基于什么呀,驼峰的方式来命名的。
14:06
能听懂吧,是要基于驼峰的方式来命名的,而它真正所对应的那个名字就应该叫做小写的NAME2。能听明白吧,所以说呢,你在这个位置指定的时候呢,你千万不要去把这个大写给人家写上,写上就不对了,你看到没有,而是还是要写这个小写的,听懂了吧,因为这个地方,因为我们是这个方法的名字,它叫什么,基于那个头风的方式来命名,所以说呢,它会写成大写的,但是呢,实际上呢,就是一个小写的NAME2才是我们的属性。好吧,把这个再来给大家去强调一下,好,那么除了这个之外呢,其他的大家再来看看还有没有有疑问的地方。应该没了吧,本来就是这两个配置,还有还能有啥疑问啊,对吧,这里面是用到的都给你解释到了吧,能听懂了吗?OK啊。
我来说两句