00:00
今天的内容呢,就是从昨天的内容开始接着搞啊,差了一丢丢,叫做这个properly啊。来看看这是什么东西?首先,为什么要使用这个practice呢?首先看这个代码啊,这个代码呢,咱们应该应该很熟悉了。对吧,四个参数,然后获得连接对象是吧。好,这四个参数,关键的是这样的啊。呃,假设呢,咱们现在这个项目呢,已经写好了啊,非常复杂的一个项目啊,代码非常多。然后呢,现在我有个需求,说我要更换数据库。或者说数据库的这个账号啊,我想再更换一下,或者说数据库的这个IP换一下,或者说端口换一下,或者说数据库的名换一下。也就是说这些东西如果要修改的话。它会涉及到。什么动作呢?大家都知道Java程序。
01:04
想要运行必先加va c吧,这还记得不?也就是说Java程序你稍微改动一点点。必须得先加上C,然后才能运行。对吧,那现在咱们这个程序。这个程序假设说今天我用我的这个账号。明天用你的账号。两个月之后用他的账号。也就是说这个账号这个变量是不是可以随时的更改啊。那你看我改了1.1点点,我整个项目就得重新编译啊,我再改一次,整个项目重新编译啊。对吧,你改的虽然很小,但是我需要整个项目的重新编译。很麻烦很麻烦的事儿啊,这很麻烦啊,所以咱们能不能想一个办法,什么办法。
02:05
让这些可能随时随地更改的这些参数哈,让他干嘛呀。脱离程序本身,脱离程序本身的目的是什么?就是让这些参数的修改不参与项目的重新编译。听懂了吗?对吧,就是这个总改啊,项目重新编译很麻烦,那我能不能把这些参数放在另外一个地方。你不管你怎么改项目呢,是不需要重新编译的。哎,项目不需要重新编译,这样的话效率就会很高,所以你看咱们让用户脱离程序本身,修改相关的设置。哎,脱离程序本身,这个是咱们的最终的目的。如果你不脱离程序本身的话,你稍微一变项目,重新编译一遍,重新编译,而咱们现在如果脱离程序本身的话,你不管你怎么改项目呢,是不变的。
03:13
有点类似于什么呀,现在如果这样设计的话,就是。呃,那个。铁打的营盘,流水的兵。不管你这个兵怎么改,怎么走,怎么退伍啊,咱们这个什么是这个团是不是还在啊?哎,还在,而不像原先走一个兵,咱们的整个的团支部啊,就要重新构造一遍。累死了是吧?累死了。所以呢,是这么样的,整个的咱们这个项目结构不变不变,想改变其中的参数,好,我把这些参数放在这里,你上这改来,在这个空间内,你想怎么改都行,而我呢,仍然是不变的。OK吗?咱们的过程就是说把这些频繁修改的参数放这来,哎放这儿来啊,哎放这边来。
04:07
咱们怎么做呢?就需要使用配置文件,配置文件这个配置文件就叫它。叫配置文件。刚不说过了吗?我的目的是什么呀?是把这些参数脱离项目,放在另一个地方是吧?那这个地方叫什么就叫它。就叫配置软件。好吧,然后常用的配置文件practice文件后缀名叫这个里边的格式是建筑对的写法,这呢,看这。这个就是咱们这个文件里边的写法了。就是等号,前边是键,后边是值。OK吧,使用井号来注释。啊,使用井号来写注释。而且在这个配置文件中不支持中文。
05:02
所以不要往这里面写中文好吧?其实也支持,但是他支持的是那种UNO编码,你看看不懂。一会再写一下试试啊来,现在呢,我就对这个程序啊进行再次更改。刚才不说了吗?你要把这些参数啊,不能放在这儿。因为这是一个Java的类吧。你稍微就是。稍微你就空一下格。整个整个类都会重新编译一遍。这个一定要知道啊,对吧,别说你要改里边的值了,那肯定重新编译啊,所以呢,咱们现在把这些参数。有点类似于什么剪切走放哪儿去呢?放这里边来。这是哪呢?配置文件啊来。把这个配置文件,咱先等会儿剪切,先把这个配置文件建出来,那这个配置文件记住了往哪建。在哪创建呢,SC。
06:02
源代码目录右键。又一个啥呢,这里边儿。只有。就是普通的文件feel。普通的文件Excel。OK吧?哎,拗一个在什么地儿弄啊,Src右键拗一个普通不是类啊,也不是接口,也不是枚举,也不是注注解,它就是一个普普通通的费,你看这个图标就是一个大白板是吧。啊点它,然后在这块呢,给这个文件起个名,咱叫啥呢,比如说就叫。啊,配置文件这个文件名啊,你自己定义啊。啊,咱们就比如说就叫这个这个。叉叉点就叫叉叉了啊,我的意思让大家叫ABC吧。行吧,后缀名后缀文件的后缀名不能乱改了啊,叫做per t。
07:01
就是咱们这个关键字哈,完成好这个文件呢,创建出来了,在这。好吧,在这儿呢。好,然后在这里边开始写值啊写值。怎么写呢?间值对间对1A等于一,第二对值B等于二,必须按照这个格式去写。这个格式写。看到了吗?我写中文它会转成啥玩意儿?他不太支持中文啊,他不太支持中文啊,好吧。所以呢,这里边尽量别有中文,而且我要强调一点,这个里边的限制对你别养成习惯,Java里边是不是容易这么写啊。就是等号啊,这左右有个空格,看起来舒服,记住了,这里绝对不允许。必须是紧挨着的,他一点多余的东西都没有。好吧,那么A呢,咱们假设就是咱们的。
08:01
这个类这个团。好吧。剪切的放在这儿。而且你会发现我这个抠逼过来的时候,我没有加那个,看到没有双引号,为啥不加双引号呢。双引号,记住了,双引号是字符串特有的一种特质。如果给它拿出来的话,它根本就不是这在这块啊,它不是一个字符串变量,它只是一个值而已,所以根本没有那个双引号。好,B呢,咱们就交了它。叫他。来C等于啥?D等于啥,咱就abcd行吗?哎,我的名儿。这个简单。好了,这不是报错啊,这不是报错,他只是进行一个拼写的检查。无所谓啊好了,这样的话,我这个配置文件就写完了。你会发现在这里边。没有了吧。
09:01
哎,最好你说这样的好还是。这样好。声明字符串没空的时候。对于性能优化来说,这个好啊。这个好啊,好吧。OK。那你再看现在我这个DB类这个里边,你能知道什么账号密码,连接谁的数据库吗。是不知道了。OK,那你想要获得这四个参数咋办?上这找来,上这里找来,OK吧,而且这个文件的好处是什么?我不参与项目的Java c。这就是我为什么非得把代码写到这里边儿的原因,OK。好了,那我现在接下来干什么呢?我是不是得写一段程序干嘛呀,去这个文件里边把参数给我读进来呀。读进来对吧,哎,好了怎么读取呢。
10:04
你看啊,它上来呢,在一个类中,在一个类中。这个类。具有最高优先级的执行代码是什么?也就是说你看这个类啊,上来声明,然后呢,我只要调这个盖子C才会执行这里边对吧,然后你看啊,现在假设读一下这个程序。方法上来,然后直接干的了吧。然后钙是不是读这来了。然而现在这里边儿这四个参数是啥呀?是不是空啊,那肯定是连接不到数据库的。也就是说这边他肯定报错了。肯定是报错的,那咱们应该怎么办呢?是不是在你调用这个方法之前,我就应该把这四个变量附上值啊。就在这个位置,比如说啊,写上点在调用。
11:03
方法之前就将四个变量赋值。就要将四个变量赋值。记得这个吗?知道这个吧。这静态代码块吧。啊。竞赛代码块,它的执行优先级是不是在一个类中最高啊?在一个类中。呃,把这个放后边。在一个类中,静态代码块具有最高的执行优先级。什么时候执行呢?当类加载的时,加载时。你看啊,我想调这个方法,想执行这里边代码,你是不是手动的调这个方法名啊,它才会执行对吧。
12:02
而现在静态代码块里边这些东西啊,什么时候执行的呢。只要这边你一继承他OK,执行完毕。对吧,只要你一读取这个DB类。金额代码执行完毕。OK吧,那这个代码执行完毕,这个代码干嘛呢?就是给他们四个赋值,赋完值下面就能有值了吧。所以在这里边开始如何给这四个变量赋值。那这四个变量里边的应该等于的这个值在哪呢?在这个文件里呢?好了,开始读取这个文件啊。好,第一步。读取。读取。ABC.per。细丝配着件。咋读取呢?一句代码。
13:00
其实读取的就是加载到虚拟机中JVM中。就是把这个文件加载到咱们的GF中。好依据代码搞定当前类class。点get class。点get。ABC点破。Poor。OK,这一句代码就搞定了。好解释一下啊,这块也是一个。得到DB类是不是当前类啊?得到当前的类啊DB.class。然后得到这个类干什么?再次得到类的loader加载器。当前类的加载器。然后看他干嘛。
14:00
得到机内加载器之后再次获得。Resource。源,数据源源头,那么获得这个数据源头干什么呢?把它作为一个什么?OK。就是说啥意思,把整个这句话通俗的解释,将这个文件读取到JVM中,然后以流的方式显示。Input。Strip。解读是吧。将配置文件读取。虚拟机中。就这位M中啊,这位M中并作为。流的形式返回。乙啊,也作为了以流的形式返回。
15:02
简单一句话。呃,配置文件中。所有的数据放在流中。这能明白了吧?这就不能不能简单的不能再简单了,是吧,把整个这个文件里边的数据全都放在了流里,就是这个into the stream OK,来给他引一下包,引一下这个包啊,L流。好了。然后第二步。创建。解析对象。就是说你看我这个配置文件的后缀名是不是叫practice啊,其实Java呢,提供了一个专门解读这个文件的类。专门解读这个文件的类,OK?
16:03
写上。专门。解读。点呃,Properties文件的类。好叫啥呢?跟这个单词一模一样。Properties。咱就叫PP另一个properties。好引包,你会发现在哪个包呀?是。搞这么一个类。OK。
我来说两句