00:00
OK来,那我们接下来呢,就给大家说一下,那假如说呢,我要去把我的这个配置信息呢,哎,给它移到外部的一个属性文件中,像这种pro文件中,那么我们怎么去把它引入进来,并且呢,配置好我们这个连接池啊,那么首先的话呢,我们就要去写上一个这样的一个属性文件,能听懂吧?OK,来,首先我们回到这个开发工具中,还是在我这个src下面,我们去扭上一个file,我就叫做DB.practice然后在这里面的话,就是配上我们的K是不是等于V的这种形式啊,对吧?来把这个给它写好,来写一下吧。呃,以前大家怎么写的?哎,就是这些什么driver class是吧?OK,那注意了啊,现在我建议你们写成这个样子的啊,JDVC.java就是给他一个前缀,什么JDVC.url j dvc点啊user name,什么JDVC.password好大家最后呢给他上。
01:00
写上一个前段,为什么呢?一会我可以简单跟你说一下,因为这里面会存在一个小小的问题啊来,我们先按照这个方式来写,Com点买so后点这里写点Java这个的,这个大家都能写出来吧。啊,有同学写不出来吗?啊,这东西都是最基本的哈,你要这个东西都写不出来,那真的是有问题的,好root,然后呢,1234OK,我就把它写好了,那么写好这个以后呢?呃,剩下的一件事就是我们要考虑如何在这里面呢,去把我们的外部的属性文件给它引入进来啊好,现在我就把它注释掉了,就是我们直接进行配置好,接下来我们要什么呀,然后通过什么呀,引入外部的属性文件来配置我们的C3P0连接池,OK,那么要做的第一件事就是什么呀?哎,引入外呼的属性文件。
02:04
怎么引用呢?大家听我说,我们有两种方式啊,先来给大家讲,第一种方式就是比较古老的一种方式,我们通过一个并来去写啊,通过一个B,然后呢,这个class用谁呢?它叫做property place holder con啊这个名字也比较长啊,叫做property place holdda confi,通过它呢,我们只需要在这个里面呢,给它指定上一个注入上一个值,注入什么值呢?大家注意,它叫做呃,Location能听懂吧,就是我要给它的这个类的location,给它注入一个值,而这个值要指向谁呢?就指向你要引入的那个属性文件,它所在的位置,那么我们现在这个属性文件在什么地方啊,是不是直接在src下面,也就是我们的类路径下面吧,对不对,是不是类路径下面啊,对不对,OK。
03:04
好,那我现在要告诉大家啊,在坡里面呢,它帮我们提供了一个语法,就是直接从你的内路径下面去读取一个你指定好的这个文件,那么这个语法写出来是这个样子的,叫做克拉斯帕斯冒号,这个语法代表的就是从类路径下面去读取一个你后面要指定的这个属性文件,比如说现在我就写成DB.pro那么它的意思就是我要从类路径下面去读取这样的一个文件,注意这个语法是破里面才能用的,你在别的地方千万不要去用,听明白了吧?能理解了吗?啊,这就是一个呃,特定的一个语法格式啊,大家就直接按照我的这个方式来写就行了。好,呃,那么顺带呢,再来给大家稍微扩展扩展啊呃,你这么写的话呢,就是这个class冒号,它是从我们当前这个工程的类路径下面去读取这个配置软件的啊,就是从你当前这个工。
04:04
同程去读的,但是的话,大家注意以后我们在实际开发的时候,我们会把整个的应用呢,是不是按照这个模块给它划分成各种各样的子模块吧,也就意味着每个模块呢,其实我们又是一个子工程嘛,是不是那么将来比如说我想在这个工程里面去读到你这个工程里面的一个配置文件,那么你这么写它就不行了,因为它只能从当前工程去读,如果说你想让他在整个这个应用下面,就整个模块里面去找,那么你就要写成什么呀,写成class冒号星啊class pass星冒号这个代表的就是从多个类路径下面去找我们的属性文件,明白吧,只不过现在啊,我们还用不上,就是我给大家稍微的扩展一下,等你们后面,呃,你们会讲一个项目啊,讲项目的时候,那么到时候你们肯定就是要拆分成各个模块去做的,到时候诶你就会用到这个class pass了。
05:04
听懂了吧,现在你先简单的了解一下就可以了啊好,那把这个写好以后呢,其实我们这个文件就已经把它读取进来了,这是我们教给大家的第一种方式啊,接下来呢,我来教给你第二种方式去读取,也是我推荐你们去使用的啊,比这个要简洁很多。那么第二种怎么用呢?我们首先需要去打入一个context这个命名空间,看到了吧?来把它前面打个勾,OK,再回来我们就能看到它加上了contact,并且呢,帮我们引入了一个这个XSD文件,那么也就意味着我在这里面呢,就可以写出cor什么什么的,看到了吧?OK,这里面有一个叫做property place hoer,看到没有是吧?哎,有这样的一个配置,然后呢,在这个里面,你直接通过location去指向你的class pass,冒号DB.pro,这就可以了。
06:04
啊,这个配置跟上面的这个配置原理是一模一样的,而只是配置的方式不一样,明白了吧,其实这个配置就是什么,它底层呢,也是要通过这个类呢,帮你去读一个什么这个配置文件的理解了吧,只不过呢,这种方式配起来就更加的简洁一点了啊所以说呢,我推荐大家呢,使用我们下面的这一种,那么上面的这一种呢,我就把它注释掉了啊,你知道可以这么配,你在看到别人这么配的时候呢,哎,你得明白它是什么意思理解了吧,OK,好,那把这个配好以后呢,那下一步那就简单了,我们就是来什么配置我们的数据源了啊,配置我们这个C3P0好连接池了,来吧,我们就来看看这个家伙怎么用啊,那么它还是一个并ID的话呢,我还叫什么呀,还叫。
07:04
Dinos sourceurce吧,因为上面我是不是已经注释掉了呀,对吧,还叫dinos sourceurce啊啊class呢,我们还是combo to啊dinosaurce只不过这里面你再去写的时候呢,大家注意啊,Property,像这个Java class,我们还用把那个完整的东西都写到这吗?还要写它吗?不需要了啊,注意现在这个值的话呢,我就可以到这个文件里面去找了吧,那么你看这个文件里面呢,我们已经通过一个K呢,把这个值给它配到这了,所以说呢,我们只需要指定好这个K,它就能把这个值给你读进来了。好,这个地方我们用到了一个语法,什么语法呢?就是一个Dollar大括号,在Dollar大括号里面,你直接去写你属性文件里面的K,我的叫做JDBC.driver好,再来往后写下面的是不是都会了,Jdbc u ly y6等于什么呀?哎,等于Dollar大括号JDBC点二。
08:08
URL是吧,再来写,像我们的这个啊GU啊Y6就等于什么呀,Dollar大括号GDBC.U3内啊password y6呢,就等于啊,Dollar大括号GDBC点2PASSWORD能看明白吗?啊这就把它配好了,好所以说呢,我再强调哈,在这个整个配置里面来讲,这个值我们能随便写吗?不行,这个一定要跟什么呀,跟人家这个类里面的那个赛方法去做对应,而后面的这个东西你就根据你的属性文件的那个K来去写就行了,能明白了吧,OK,好,那么这个下方以后呢,再来给大家去说一说,这个当大括号注意在这个位置,它就是一个语法格式,能明白吧,就是呢,它在底层的话呢,去解析的时候,我就。
09:09
要通过你的这个Dollar大括号呢,来去解析到你里面的这个内容,再拿上这个呢,到我们的属性文件里面去找到对应的那个V,所以说大家千万不要把这个Dollar大括号理解为我们以前学过的那个EL,听懂了吧?在JSP里面你用Dollar大括号,这是EL表达式,但是呢,在point里面你用刀大括号,它就不是EL,明白吗?你不能看到刀大括号,你就说诶这是个EL表达式,其实不是的,你得分它的分这个使用情况的听懂了吧?OK,好,那配好以后我们来做测试,大家注意回到我们的测试类里面,还是直接来测它就可以了,你看一下我是依旧能获取得到的,对吧?那么既然你能获取到,也就意味着我们刚刚的这个配置肯定是没有任何问题的,听明白了吗?OK,就是这么来去用的啊,那么这种方式呢,就是引入我们外部的属性文件。好,接下来我给。
10:09
大家去说一个其中的问题,就是刚才我在写它的时候呢,建议大家呢,前面都加上一个前缀,为什么呢?因为这里面有个小小的问题啊,这个东西呢,我可以给你演示一下,假如说我这个username的前面没有写这个JDBC点什么什么什么,那么正常的话,这个文件写起来,我这个叫什么名字是无所谓的吧,对吧?那么同样道理,你这个地方写它好,那我在我的配置文件里面,我这个地方是不是也得写它啊,只要能对应上就行了吧,但是这种情况下,你再来测试一下,它就获取不到连接了啊,很隐匿的一个错,你看一下正在运行,正在尝试获取连接的,看到没有啊,你就等吧,等半天它也获取不到,然后呢,就会给你啊抛出一个异常啊,我们稍微等他一下。
11:08
以后好是。啊,还没完是吧,反正这个连接肯定是获取不到,诶完了啊,你看一下,完了以后呢,就给你抛出一个异常来,说什么呀,说有一个权限的问题,什么权限啊说诶我通过这个dminist看到没有,这东西哪来的看到没有,这肯定就是你的用户名和密码的问题了吧,对吧,其实我告诉你正常我数据库的用户名叫什么呀,叫root对吧,而且这里面我配置的是不是也是一个root啊,但这个地方他说什么呀,他说什么你看啊,我通过这个用户名我登录不上了,权限不对说明什么呀,说明你压根就没有读到我的root,而是你读到了这个admit。那你说这东西他从哪读到的呀?哎,注意了,就是我当前登录我这台计算机的用户名就是一个administrator看到了吧,所以说他读到的是这个家伙,你知道吧,能明白了吗?这个问题我要不说你遇到以后,你肯定就不知道怎么解决了,对吧?你能想得到他能读到系统的用户吗?是吧?诶说说这个很隐秘的一个错啊,呃,为什么呢?可以稍微给大家去解释一下啊,就是呃,这个位置我们读到这个属性文件以后呢,其实它会把我们这个属性文件里面的那个key跟vita解析出来,解析出来以后呢,这些就是一个什么属性配置了,属性设置了,它会把这个解析的东西保存到什么地方呢?保存到我们这个系统的某个位置,就是系统的内存里面,而这个内存的那个地方呢,就是跟我们系统的一些变量呢,诶会放到一起了,能明白吧,那么将来你去读的时候呢,啊,你读到的就是那个系统的那个东西了,听懂了吧叔叔。
12:55
就它跟这个系统的那个,呃,保存那个属性配置的那个地方了,哎,是一样的,所以说呢,它就会出现这样的一个问题啊,我们只需要知道这个原理就行了啊,不需要深入的去研究它,那也就意味着我们再去写这个属性文件的时候,我们就一定要避免使用U3内,而是直接加上个前缀,你的系统你不可能使用这个前缀吧,对吧,我们就自己给它加上一个前缀,那么这样的话呢,你再去读的时候,就不会再出现出现刚才那个问题了,好,你看我把它加上以后呢,我们再来做一个测试,那么大家来看一下,现在我这个链接是不是立马就拿到了,看到了吧,OK,所以说这个小小的问题呢,需要给大家去说一下啊,那么大家呢,知道一下就行了。
13:40
明白了吗?啊,那么整个这个话题的话,大家不要忘了我们讲的是什么呀,讲的是如何去引用我们的外部的属性文件,顺带着呢,又给大家去讲了一下如何配置我们的这个C3P0啊这个连接池学会了吧。
我来说两句