00:00
好,那下面呢,我们来考虑一个问题,那我们学习了spring的IOC之后啊,大家都知道IOC呢,其实就是帮助我们来管理对象。那我们之前呢,咱们在实现功能的时候,咱们所用到的一些对象,咱们现在可以交给LC容器来管理吗?比如说我们原来在JDBC的时候啊,咱们学习过一个数据源,叫做data source,当然这个东西是一个接口,我们后面呢,又学习到了它所对应的一个实现啊,叫做德鲁伊。那其实咱们的数据源呀,它本身就是一个对象,那所以说我们现在可不可以把它交给IOC容器来管理呢?大家注意是可以的,好,那我们现在呢,咱们该如何去配置呢?那首先呀,咱们需要把它所对应的依赖加上。咱们所需要用到的依赖,一个是买SQL的驱动,一个叫做数据源。那因为咱们的数据源呢,它就是来管理数据库连接的。那所以说我们必须要有MYSQ的驱动啊,好,下面咱们来一个复制,然后把它放在咱们的这个POM的XL中,然后咱们来导入更新,好,然后下面呢,我们来创建一个新的配置文件。
01:10
比如说这个配置文件咱们就叫什么,咱们叫做spring,然后杠data source OK,好,那我们现在咱们要想让IOC容器来管理数据源。也就是来管理数据源的对象,那大家说咱们是不是只要来设置一个B就行。它的ID呢,比如说咱们就叫做data source so,好,然后呢,它的类型咱们要设置成什么,大家想一下,你能设置为data source吗?不行,因为这是一个接口,对吧?然后咱们之前呢,咱们在讲这个IOC容器中配置并的时候就跟大家说过,然后我们的IOC容器呢,它是怎么来创建的对象,是通过我们的class里面所设置的这个类型来获取这个类型的class对象,然后再通过我们当前的new instance方法来调用无参构造创建的对象。
02:04
那所以说大家来看,那我们当前的接口是不是连构造方法都没有,那这个时候咱们在这能写接口吗?不能,所以说我们需要来写的是一个类。那这个类我们应该写什么呢?那我们现在应该来使,咱们现在应该来使用的是这个data source的实现类,然后我们现在咱们的数据源的实现,咱们用的是德鲁伊,那所以说在这咱们应该用的是D啊UID德鲁伊data source,哎,行,这个大家注意。好,那下面呢,大家说我们在创建德鲁伊数据源的时候,咱们是不是要把咱们连接数据库的那四个参数设置上,当然不止四个,还有一些其他的对吧?好,大家来看一下啊,Property,那我们现在要为其中的属性赋值,那不就是依赖注入吗?那咱们的依赖注入两种方式,要么set注入,要么构造器注入,对吧?好,然后呢,我们比记用的比较多的,咱们说的就是set注入,那所以说咱们直接用property标签,然后呢,来选择我们要复制的属性,Driver class name,这是驱动类名称,然后这个是连接地址,这是用户名,这是密码,所以说我们需要用到这四个,好,那下面呢,我们大家来看它四个是不是都是字符串类型啊,所以说咱们直接用value就可以啊,好叫com.my circle.cg.gdbc,然后点driver就可以了,好然后再往下咱们的第二个是URL,大家还记不记得怎么设置啊,在这里面应该是GDBC冒号,My circleq冒号,双斜线加IP地址,然后再加上端口号,然后再加上我们当前要操作的数据库,然后如果我们用的是MY搜狗八,我们还需要设置一个什么呀,叫做时区,叫做server。
03:51
Serve v,然后time zone,然后等于UTC就可以啊好,然后第三个咱们需要来设置一个用户名,然后咱们的用户名呢,我的用户名是RO root,然后这个密码呢,然后我的是123456,当然呢,这四个是最基本的连接数据库的数据,然后我们还可以来配置一些跟咱们的数据源相关的,就比如说大家来看这里面呢,有property,然后大家看一下这个东西叫做initial size。
04:25
这个东西是干什么的?来设置我们当前咱们的数据库连接池中,然后初始化为我们设置的连接的个数。比如说我们可以设置为十个,当然它默认值是零,大家注意,然后这里面还有什么,比如说我们在这有一个叫做。啊,叫做ma,大家注意max active这个东西啊,那这个东西是什么意思,就是我们当前数据库连接池里面最大能够存在的连接的数量,然后这个东西默认是八。大家可以去测试一下,如果你如果我们只从这个数据源里面来获取连接,而你不关闭连接,也就是没有将这些连接返回的话,那我们当前最多你只能获取八个,当你在获取第九个的时候,你会发现它会干什么,它会一直处于阻塞状态,OK吧,好,那为什么它会一直处于阻塞状态呢?因为咱们在这儿还有一个属性叫max weight干啥的来设置我们当前获取连接等待,等待德鲁伊为我们分配连接的一个最大等待时间啊,然后如果说我们不设置,那它就是一直等,一直处于阻塞状态啊。好,这些属性大家可以设置,也可以不设置,因为它都有默认值啊。好,OK,那下面呢,我们就可以来测试一下了,来咱们来创建一个测试类,然后比如说这个咱们就叫做data source data source test。
05:53
好。然后来创建一个测试方法,然后test叫data source就可以啊,好,然后呢,我们要干什么一样的操作,首先咱们需要来获取我们当前的IC容器,等于new class pass叉、ML application contest,然后把我们当前配置文件的名字呀给他拿过来,然后下面我们在这通过IOC来获取咱们当前的对象,怎么来获取呢?大家还记不记得咱们说以后我们用的最多的方式就是根据类型来获取,就比如说我们当前咱们的这个数据源,我会不会在IOC容器中配置多个数据源类型的B?
06:35
不会,我们只会配置这一个。再说了,数据源是统一帮助我们来管理连接的,我们在一个项目中需不需要来创建多个数据源呢?也不需要。OK吧,好,所以说在这大家注意,咱们直接通过类型就可以获取啊,好,那我们都可以通过什么类型来获取,大家还有印象没有,我们可以通过它本身的类型,还有就是它所继承的复类的类型,以及它所实现的接口的类型,所以说大家在这你说你用德鲁伊source.class行不行,可以,或者说我们用data source.class可不可以也是可以的,这个大家要注意啊,好,那行,那下面呢,咱们在这直接对吧,咱们可以测试一下data source.get connection,然后把我们当前咱们这个,咱们从我们的德鲁伊里面来获取一个连接对象,然后把它给输出,大家注意这个东西啊,如果说你连接不上,在这是会直接报错的,知道吧,咱们只要能把这个内存地址输出,那说明我们当前的连接就已经创建成功了,OK吧,好。
07:40
大家来看啊。好,大家看一下有问题没有,没有问题对不对,然后呢,比如说你看我在这把这个密码呀,我多写了个一,我现在再来这个获取连接,大家注意你这个时候你是获取不到的,知道吧?啊大家看一下,你看它一直在连接,一直在连接,一直在重试连接,然后为什么?因为我们当前咱们的密码错了,这个错误大家也要好好看一下,因为你只要看到这个错,那就是咱们的密码错了,OK吧,行啊,好,大家看它一,它现在还是在一直在重试连接状态啊好,咱们把它关掉,然后在这咱们把密码给设置对就可以啊。
08:21
好,那当然呢,那我们之前咱们在讲my be的时候啊,咱们是不是也说过一个问题,我们连接数据库的这几个数据啊,我们一般都是要把它给放在哪的一个properties文件中,然后方便我们去维护它,对不对?那我们在当前咱们的IC容器里面,咱们能不能实现这个效果呢?也就是说把我们当前这些数据放在哪,放在一个这个properties文件里面,然后再通过我们当前的spring的配置文件去访问我们properties文件中的这些数据,可不可以也可以啊,比如说我们在这来创建一个properties文件,大家注意选哪个resource bundle,比如咱们就叫做TDBC.properties里面都有什么div driver,对不对?然后还有URL,然后还有user name,然后还有密码是password行。
09:15
好,咱们把简单的写一下root密码123456,然后其他的咱们直接来复制就行啊,这是我们的驱动类的名字,然后这个是我们当前咱们的连接数据库的连接,OK啊行,那我们这样设置完了之后,咱们当时讲买杯的时候,还给大家说过一个问题,什么问题啊,咱们说了,如果我们当前有多个properties文件,那我们的键都是建名实义的,那所以说是不是很有可能会出现同名的问题。重名的问题对不对?好,那所以咱们要想来解决这个重名的问题,咱们说了,在proper文件中,大家去存储一些数据的时候,最好是给它设置一个前缀,大家有印象吧,咱们当时怎么写的,叫做GDBC.driver叫做GDBC.url叫做GDBCGDBC点,然后user nameme,最后一个也是GDBC.password OK吧,行,好,但是咱们把这些数据都放到properties文件之后啊,大家会发现这个文件跟这个文件它俩之间有关系吗?没有任何关系,就像是我们当时咱们在讲my be的核心配置文件的时候,咱们把数据放到ties文件之后,咱们是不是也要把这个properties引入到my beatties的核心配置文件中你才能用的,那在这呢,也是一样的,我们必须要把当前的proper,引入到我们当前的买杯啊,引入到spring的配置文件中,咱们才可以来。
10:48
获取properties文件中的数据,OK吧,好,那所以说咱们在这要做一件事情,什么事情叫做引入咱们的GDBC.p文件,怎么写呢?大家注意啊,然后有两种方式啊,其中一种方式已经被淘汰了啊,大家看好,咱们来写一个B,大家注意,这个B它就不是由我们来访问的,这个B呢,它就是由我们当前的IOC容器。
11:16
然后由他自己来获取,来实现相对应的功能,OK吧,来引入咱们的properties文件的功能,啊,好,那这个class等于什么?大家注意,它叫做property property,然后place holder con。咱们需要用到的是这个,但是上面拉了一根横线,说明这个类它已经过时了,所以说在SPRING5版本里面,它是这个不建议我们来使用这种方式的,那所以咱们就不用了呗,大家要知道啊,你通过一个B也是可以来引入我们当前的proper文件的,那在这它给我们提供了一种更简单的方式,哪一种呢?大家注意啊,我们在这需要用到一个新的约束,叫做context,这个大家慢慢以后都习惯了,因为咱们每讲spring里面的一个新的内容的话,它都是需要用到一些新的约束的,那咱们现在需要用到的约束是什么?叫做context,然后冒号大家看好,然后去找你要用的这个标签啊,叫做property,叫做property,叫property place holder。
12:21
大家看用到的是这个标签,然后咱们选中之后大家一个回车,大家注意,你看在上面是不是就把咱们context的上下文的这个约束是不是给我们引入进来了,OK吧,好,这个大家注意啊,好,然后它就是专门来引入咱们的properties文件的,OK吧,然后下面咱们在这有个属性,叫什么location干啥的,来设置我们当前咱们的properties文件的路径的。那我们当前咱们的这个配置文件是在这个位置,那咱们的properties在这个位置,所以说咱们是可以直接来访问他的啊OK。那行,那我们来引入了properties文件之后,我们就可以干什么了,大家注意跟MY一样,好,然后之后,然后咱们就可以通过Dollar大括号,然后K的方式方式,然后来访问value,哎,这个大家注意,那所以咱们在这是不是就可以改一下了,怎么写啊,Dollar大家注意Dollar大括号,然后叫做GDBC,你看这都有提示是不是啊啊就GDBC.driver然后咱们把这个复制一下,然后放到咱们的这个地方,然后这个应该是GDBC.urlurl。
13:36
URL好,然后这个的话应该是GDBC.u点内,然后这个是GDBC点2PASSWORD就可以啊行,那下面呢,我们在这咱们再来测试,大家注意咱们的测试这里面是来获取的一个连接对象,OK吧,然后我们现在咱们再来一个执行,大家看啊。好,大家看是不是就可以把我们当前咱们的这个连接的一个啊内存地址帮助我们输出,OK吧,好,这个是我们的spring,咱们的IOC容器来管理数据源的一个内容,以及我们当前在IOC容器中去引入我们的什么呀,在咱们spring的配置文件中去引入咱们的properties文件的一个方式啊,好,OK,大家注意这个东西用的很多,为什么以后我们是要拿着spring去整合my be的,而咱们的my be里面,大家记不记得核心配置文件中是不是就必须要配置一个environment标签来设置连接数据库的环境,然后其中就有一个data source标签是来设置数据源的,那所以说我们现在呢,既然咱们的spring要整合my be,那我们的spring中有数据源,那咱们的买be是不是就可以直接来使用了,对不对,所以说大家注意啊,咱们的这咱们当前所给大家讲的这个配置,我们以后是经常会用到的,OK吧。
14:56
好啊。
我来说两句