00:00
各位同学大家好,在前面内容中呢,咱们已经完成了IOC部分的讲解,基于叉买lo进行并管理,基于注解方式实现并管理,这个我们都完成了,那下面呢,咱们学习第四章内容,第四章咱们干什么呢?我们就写一个IOC,就是模拟出IOC里边的实现过程。然后这个过程怎么做呢?咱们主要基于Java中的反射,再加注解来实现此文框架中IOC的这个效果,那下面我们来具体看看这个过程,首先因为这里边要用到反射,咱们把反射中的相关内容我们先做一个复习,复习之后最终那我们来手写spring IOC的这个功能。那咱们下面开始回顾一下反射。我这里说明啊,我这里回顾呢,只是回顾重点内容,反射中还有很多更细节部分,如果各位对于反射还不是特别清楚,各位同学可以关注上硅谷。
01:04
教育公众号或者说B站关注商微谷里边加入我基础中反射的部分,把反射学会之后再来学习本课程,我们这里边主要回顾重点部分,那咱们来看一下啊,Java中的反射机制是什么呢?它指的是对于任何一个类,我们都能够知道这个类里边的属性、方法,对于任何一个对象都能调它的任意方法和属性,而这种动态获取信息以及动态调用对象方法的功能就称为Java的反射机制。说的简单点,你要做反射首先要得到类的卡对象,就是咱们通俗说字码文件,通过字码文件能够操作类中所有内容,包括你的属性,包括你的方法等等。这个是咱们对于反射一个简单的概述,那下面呢,咱们通过一个具体例子来写一下反射中的进化功能。
02:03
我这里边给各位来写一下。那首先我在这里边,咱们建一个子模块,我这个位置做个创建。这个模块我们给它起个名字就叫死六杠,这个反射反射。这个我们做一个创建,然后创建之后在里边咱就演示反射中的主要代码,那咱们来看一下啊。首先第一部分我在里边呢,咱们先建个包。我做创建。com点。At硅谷点X反射,然后里边我来建个类,通过这个类来出反射的效果。那这里边呢,咱们就建一个这个卡,就是汽车这个类,我们做个创建,然后在里边为了测试咱们加上几个属性,比如说我加第一个属性汽车嘛,肯定有它这个名称。
03:02
啊,比如这个汽车是一个什么夏利的汽车,是捷达还是什么五菱宏光啊,这个汽车这叫名称,然后第二个加一个就是汽车,它这个使用的这个年龄,咱就叫A的,比如这汽车目前是新车,它是零年,比如这汽车用了一年,汽车开了两年,汽车开了十年,这叫年龄,然后再写第三个就是汽车的颜色。润,我们来一个叫color。这是颜色,比如这个汽车是绿色,是黄色,是粉色等等,这是我们写的三个基本属性,然后写完属性之后,咱们下面的把属性对应的get和set方法咱们都给它生成出来。这些都生成下,这是我们生成的get和get方法,就包括这几个,呃,只有一个颜色啊,没生成,对,咱们再把其他的都生成下。
04:02
名称和age。我们也。都进行输出。现在啊,这个get set方法我们就生成了,然后生成之后我在里边写一下,我加个注释,这里边有三个属性。然后有对应的get和set方法。另外咱们生成它的构造,构造呢,我生成两个,一个是无参数的构造,还有一个是有参数的构造,咱们都进行生成,为了一会儿测试方便,那我先生成它的无参数构造。这个给他生成一下,呃,无参数啊,就这个就要给它去掉。然后再加上一个有参数的构造。把这个都加进去,所以现在把这个我们就生出来了,然后生成之后呢,为了咱们后面测试方便,我再加上一个普通的方法。
05:05
但是这个方法各位注意啊,你发现我现在属性是私有的,而我这些方法是不是都是public的。那我现在为了测试,我加上一个私有的方法,咱们叫private,比如叫因为汽车嘛,它有运行啊,来个RA,然后里边我们做一个输出,我写一下就是这是一个私有的方法。咱们加上一个。所以现在把这个最基本的准备工作我们就完成了,有三个属性,有对应的get菜的方法,有有参无参构造,以及我们建立一个普通的自有方法,这个是基本准备,那下面呢,咱们基于这个类来用一下反射中的新闻内容,咱们来具体操作一下。我在这位置建一个测试类,咱们演示反射。这个类我起个名字就叫t car。
06:03
然后在里边我们加上一个一个方法,首先我写一下我们要演示哪些内容。首先第一个我们会演示,就刚才提到了,你要用反射需要先得到一个叫class对象,所以咱第一个先演示获取class的对象的这几种方式。写下获取卡对象多种方式,这里边咱们主要演示三种常用的方式,这是第一个咱一会儿演示,然后这个之后第二个咱们演示用反射获取类里边那个构造方法,包括咱们构造进行调用等过程,不管你是有参无参构造咱们该怎么进行操作。然后第三个我们来演示,通过反射来获取类中的属性,包括你是。大家看啊,我现在属性是不是都是私有的啊,当然可以是public属性,然后咱们获取使用之后,这属性我可以进行值的设置,然后第四个我们来演示,通过反射来获取。
07:08
你类中的所有的方法,包括咱们通过对象可以来调用方法进行执行,这个方法包含咱们刚才说的public方法,另外里边由private私有方法,这些咱一会儿进行实现,所以咱们主要演示四个内容,我再重复一遍啊,然后咱们开始写代码,第一个内容,获取卡顿对象的多种方式,第二个获取构造方法的过程,第三个获取属性,第四个获取方法。这个是我们要演示的内容,那下面我们来具体写一下这个过程啊。首先我们写第一个,咱们加上一个单元测试的方法public we,第一个方法我就叫TEST01了啊,咱就写这个方法,然后在里边我们做一下操作,咱们看该怎么做啊,大家注意,你要用反射,首先要获取到你的卡对象,卡对象理解为就是咱们说那个自解码文件,它用卡对象进行表示,而怎么得到卡对象里边有多种方式,我这里边主要说三种方式写一下啊,第一种方式很简单,怎么做咱们通过类名点class进行获取,然后第二种方式我先写完,然后演示,通过对象里面一个方法叫get class进行获取,另外还有第三种方式。
08:38
第三种怎么做呢?咱们通过class里边有一个方法叫full,加上你类的这个全路径进行获取,这是三种最常见的方式,那我下面给各位来演示一下这个效果,咱们看这个该怎么去做啊,下面演示一下啊,首先我们写第一个叫类,咱就用这个这个对象就是点上,这就是一种方式,大家给它起个名字啊,就叫C。
09:12
ZZ。啊,这是第一个得到卡斯对象。第一种方式,然后我们再说第二种方式,第二种怎么做呢?咱们上这个的这个对象,然后点上一个方法叫get,这个得到的也是这个对象,比如咱们叫SZ2啊,为了跟前面有个区分。这是第二种方式得到这个,然后还有第三种方式用里一个,然后里咱们通。然后最终得到的也是我们这个卡对象,比如叫。
10:00
现在我们就做了一个编写,所以以上就是如何获取卡对象,咱们演示了三种方式,大家把这个给他要知道啊。这里边啊,有异常,我给他直接咱就给它出去了啊。现在我们就完成了,把这个记住啊,这也是我们做反射一个前提条件,要得到你的对象,通过这个对象才能操作里面的属性方法,包括构造等内容。这个我们就讲到这里啊,大家啊,这知道啊,然后这个演之号下面呢,我们再来看第二个,第二个呢,咱们用反射来操作里边这个构造方法,通过它我们可以进行这个实例化这个过程,那咱们来做一下啊,首先我们先这么做啊,咱们先对这对象呢做一个实例化,我们就以这为例。啊,进行一个实例化的这个过程。那我们看怎么做啊,我们用这个叫用这个里一个方法叫get。
11:06
写下第一,然后里边有一个方法叫new,这样的话我们就能创建出来这个对象。这是我们实例化的方式,各位把这个给他要记住啊,通过它能进行实例化。然后这个过程中,当然里边有很多细节,比如说咱们实例化之后,应该是一个car这个对象,所以说给它做一个强转啊,转换成咱们这个car的这个对象。这个我就看,然后把它我们做一个输出。那我们看一下这个效果啊,把这个方法咱们执行一下,就看一下最终实例化之后,这个对象是否能得到。大家看啊,这里边报了一个错啊,说我这个没有,应该是啊,这里你看啊,这里我写错了,刚才应该是去掉多了啊,少了一个这个类的名字看啊没有这个啊,然后现在我在直销一下啊,再试一下这个效果。
12:09
大家看啊,最终的结果,你看这个卡的对象是不是就输出了,证明咱们完成了对象的实例化,给各位把这个过程老师记住,获取卡对象三种创建方式,然后怎么进行实例化,那我们用这个方法new最终完成实例化。
我来说两句