00:00
说实话,我们这个作业啊,就是告诉你。怎么能够把对象交给容器去做,在零三这个作业里边呢?我们程序中这么来定义的。在这个项目中,我们定义了这样几种类,第一种呢,是我们的这个十几类,这user,它代表的是数据库中的数据,这是第一种。第二种呢,是这个do,它有接口,有这个实验类,叫做user,实验类里边呢,模拟了一个数据库的操作。第三种呢,是我们业务对象,它呢也有接口,也有接口的一个实现内。这是我们在一般的项目开发中都有这么三大类型嘛,是一类。DA,还有service,当然还有controller,可是后面我们再讲啊,那现在我们想让呢容器spring,它来帮我们管理这些do啊,这些service。
01:02
水类不需要啊,那怎么能够把这些对象交给容器管理呢?那首先第一步你得加依赖呀。在泡沫中我们看就是以前的默认加的内容,我们呢就快捷一点,你可以从我们的零二项目中。Poem里面把这个文件拷过来就行了,你从pro po这一直拉到最后CTRLC,把这些覆盖你零三项目的泡沫就行了。从这开始,一直到最后。好,全部删掉,粘上就完事了。依赖就加进来了,加来之后呢,你最好啊,手工透文件右键。它应该有个mainven,有一个叫report,目的是呢,刷新一下当前项目,让你的idea呢,这个工具能够知道你这个项目发生变化了,他会把相关资源给重新加载一下,追report。
02:03
好re,泡的好,这就完事了,下一步应该写我们的配置文件了,因为类已经建完了嘛。我们刚才的步骤中说的是加依赖,然后创建类吗?这些都完事了,下面应该写配置文件了。配置文件呢,它的目录是放在resource目录之下,那我们在慢目录之下创建一个目录叫做resource,好,Resource在这里边呢,这个resource目录啊,是大家都公认的,你就应该叫这个目录,不要叫别的啊,不要叫别的。当然,再说一嘴,这个目录名你不叫resource也可以,但是不推荐啊,我们就叫resource。右键。设置目录呢,它是一个result route。
03:01
在这个目录下面创建配置文件。A加ins色键XM回选择下面的spring figure名称,我们建议用的是context,这是默认的名称。现在要声明病,这儿大家可能犯糊涂了,我怎么声明病?我要声明谁呢?就记住一点,你要用哪个对象,你就声明哪个呗,还是说你要用哪个对象,那你就使用这个B声明哪个对象,你用谁就声明谁呗,那我得用谁呀。用do吧,那好,那你生成do呗,那就并标签呗,并标签I,给自己起一个好叫my CQ do class权限的那名,现在就一个user deal。
04:04
我现在呢,这个写法呢,它指的是我们的标签,开始和结束呢,是分开的,就是开始就是结束。如果你的并标签中没有子标签,那你可以简便写法,在最后这加一个斜杠,这是简便写法,二者是等价的。项目中我还要用到service呀,因为正常的逻辑你应该是service去调do吧。应该是service,就叫DA,所以需要service。那我们就要声明这个service对象。声明service的对象,但是还是跟你聊,签了ID,我叫user service,自定名称class,它应该是use service in啊,然后看这个service。它里边有一个DAO吧,这是我们的属性名称。
05:01
我要给它赋值才能使用。在没角命之前的话呢,大家习惯下在这直接拗一个递对象这么写,那这种方式的话,我们这个电的值是不是就是固定的呀。就是固定的,就是这个do了,不是别人了,那这种方式呢,这个代码就是非常固定的,它不够灵活,那现在我们要做的是这个负值啊,不在这负了,它是一个负值,这个空。我们现在要把这个赋值呢,去挪到这个spring的配置文件中去做,让spring给它赋值。它要赋值的话,首先明确这是一个引用类型啊引用类型,那我们要在XML文件中给属性赋值,要求我们的属性需要有set的方法,所以你需要生成一个set。
06:05
生成一个S。这是set do,那这一部分名字跟它是一致的啊,是一致的,通过这个set do呢,完成DA属性的赋值,你的spring会调用这个方法完成赋值操作。在a user方法中完成一个添加行为,回到配置文件中,现在完成引用类型的设置,注入set,注入property DA,因为它这个对象,所以用的是RF来指定。Myqdao。那么现在。这是一个接口的实现类对象吧。实现类,因为我们的这个user音,它实现的是use接口嘛,再看我们的service类中。
07:07
这是接口吧,那我们复制的是该接口的实现类实现类对象啊。配软件中。那我们就把这个实下列对象付给我们这个do属性,那现在你的service这个对象给你创建这个属性,给你赋值。那最后我们来应用一下这个对象吗?把上面的代码呢,打开它。好,上面这块是创建我们的容器对象。我把这个重写吧,叫application context,那我们叫做ctx,名字自定义的class pass,开始文件我就直接写了。下面的这个文件放到这。
08:06
啊。Ctx的B,你要用谁?我要用service,那我就获取service。你要用谁就写谁的ID,这个user service它是user service类型的,还要加回车,因为这个对象在配角音中,我们看它是use the音,而这个类它是有接口的呀,所以它的接口类型的定义,这个变量呢,就是接口类型的。现在有我们这个对象了,对象调方法I的user需要一个参数,那谁user user等于new user啊,然后user.set这个就随便写了,我们就是一个模拟S20传入我们这个user对象。
09:09
好,再在执行我们的测试。看结果肯定成功了吧,说使用什my cycle呢来插入数据库了,那就完成了呀,那现在这种模式就是以后我们开发中常用的模式,我们把对象呢,通通都扔给由spring统一来创建这些类的对象。创建我们的service,创建我们的DAO对象,然后在项目中我要用service,我就get这个service,我要用do,那我就get b,这是do对象就可以了,想用谁我就获取谁,这就可以了,好。那这么做有什么优势呢?那如果说某一天我们的项目呀发生了变化。
10:01
我们现在的项目呀,他不准备使用my cle数据库了,他要换一个数据库,比如说换一个在业内有名的Oracle数据库。啊,要用两口。那Oracle数据库呢,他做的这个添加行为插入操作,它跟MYSQL呢可能不一样。那这时候你的项目得需要改动代码才能适应新的数据库的添加行为呀,那我们怎么去改代码呢?小代码。那第一种方式的话,那可能就是你把这个方法的实现改成A的呗,这一种方式,这种方式最原始的,最直接最直观的,那这种方式呢,它有利也有弊。另一方面就是它快捷,你改这就完事了,但是它有可能会造成什么呢?假如说有一天你的这个数据库。不用这个Oracle了。
11:00
又换成我们这个买cycle了,那你看你这些代码是不是就都没了呀。所以我们利用另一种方式,我们现在是面向接口编程吧,接口你看我们在进行声明时。我们声明的是接口,第二是接口中的方法。哎,说啊,这是接口对吧,没问题吧,接口,然后这是接口中的方法。同样,再看我们的service。声明的依然是接口。调的是接口中的方法,我们现在所做的都是面向接口去编程,有什么好处?接口的这个时间内。它是可以改变的,那我们现在就可以这么做了,我在in input包中呢,我就创建一个新的类,它叫做Oracle DA in,同样实现我们这个接口,U do ctrl加O键搜索insert。
12:03
实现这个方法,然后我们来输出这是ACO的ins色user in色的user,是不是这样就可以了,那现在我要用这个or瑞的怎么办?源代码。不需要改,你就说你这些地方这都不用改,都不用动,我现在要给这个do负的是个新对象。用spring来做打开配置文,你那现在我用新对象了,那就再声明一个呗,你要用谁你就声明谁,声明一个B哦,叫Oracle。指定class,那就是ale呗。好,Break樱桃,那现在我把这个对象附到这这就行了,付过来。
13:00
这时候执行代码就行了,改动量非常小,就能适应新的程序变化了。再来看Oracle的隐私U38,那现在我们成语中改动的时候,只需要简简单单的一点点改动,我们的代码呢,几乎没有太大的变动,就可以实现新的对象的使用了呗,这样就很方便一些。因为现在程序规模小,就一两个类,你看不出太大的优势,如果你项目中有成千上百个这样的类,如果你你需要这样的修改的话,这么做肯定比在代码中那种改动要容易的多,而且呢,它的效率会高,错误的几率呢也会降低啊。这是润的一个优势啊,结耦合,什么叫结耦合?就是你这个service,它所依赖的这个递由这个关系可以在这个文件中来实现。
14:00
和你在代码中比。代码中这种方式直接拗一个对象这种方式我们叫固定的这种方式。他是说你这个service依赖这个do是紧密的,是紧密的是耦合在一起的。耦合在一起的,就是非常非常紧密的。你尿出来这个是。买赛。那么此时你的地流就只能是它了,这是固定的,叫耦合的。当然我们现在是在配置文件中给它在成直行时来赋值的,那此时呢,你的这个service和这个地的关系就是松散的,也就是解耦合的。也就是说它的值是可以动态的去替换的啊,这叫做集耦合,就是松散的。解偶合的话,那么这个对象的赋值就容易一些呗。好,这是我们的作业的内容。
我来说两句