00:00
好,接下来呢,我们再来说一个spring配置文件的加载位置,也就是说spring在启动的时候,诶,我们会把application properties或者application压ma作为主配置文件,但是呢,它的这个配置文件位置啊,既可以放在我们这个路类路径下,也呢可以放在它指定的位置,比如第一个位置你放在咱们当前项目文件路径下的con这文件夹里边,或者呢,直接放在咱们当前项目的文件路径下,或者呢,你放在类路径下的config里边,或者呢,你放在类路径的根目录里边呢,这四个位置词boot呢都可以识别,而且呢,它是按照这四个位置的优先级,它先来加载第一个位置的文件,哎,然后呢,依次往下加载,优先级由高到低,如果说第一个文件里边配置的内容。
01:01
哎,已经加载过,在最后一个文件里边也有配置相同的内容,那么高优先级就会覆盖低优先级,那么呢,可以来试验一下,那为了实验简单呢,我就不用这个工程了,我来直接创建一个新的工程。好。来填上。com硅谷好,那么这个呢,叫。BOOT02,咱们这个叫conf conf啊零二,然后呢,我们还是选中web模块。好,他呢在我们这个档案窗口把咱们本项目创建出来,好,我们呢,演示一下这几个的优先级,我把这几个删掉。SC下我们这个主配置文件呢,我们默认放在类路径下的啊,咱们这个application properties,比如呢,来调整一个端口号,我等于8081。
02:07
来我来启动一下它,那么呢,服务器就会以8081端口启动。我们来稍等一下,好,8081没问题,它加载到了来,我们说spring还识别下面的这些内容什么呢,你也可以在类路径的conf文件夹夹一下,比如呢,我们这个resources这个类路径下边呢,我们写一个config文件夹,我呢把这个配置给这儿复制一份。然后呢,我们来调成8082,那大家说是用8081端口还是8082端口呢?来我们按照优先级的顺序,那么类路径下的con文件夹里边的东西比类路径根目录下的东西优先级更高一点,所以说呢,应该是8082端口,我来启动测试一下。
03:03
好,我们看到确实是8082,那我们把更高的两个优先级都可以测试一下啊,当前文件的根目录下,那我们这个当前项目根目录下,我来放一个application properties,哎,我改成8083,那呢就按照8083启动了,我来测试。这呢是8083,哎,包括呢,我给当前项目文件路径下,我专门来写一个文件夹,然后呢来我们把它。放在application properties放在里边包用8084,那按照优先级文件路径下的文件夹里边的优先级是最高的,我呢启动,那他就应该用8084。好,这呢就是我们的这个路径,那总结起来呢,就是它会从这几个地方的优先级来进行加载,我把这个呢来记录一下,放在这儿。
04:03
但是呢,记住一句,这些优先级呢,是由高到低优先级。优先级由高到低优先级由高到低。到D高优先级的,高优先级的配置会覆盖低优先级的配置。诶注意一句话啊,它叫覆盖,也就是说呢,Spring boot,只要这四个优先级上都有文件,会从这四个位置。位置全部加载咱们这个主配置文件。也就是说呢,不是说高优先级的配置文件有了后边就不看了,高优先级有后边还要加载,那么一加载以后呢,还会形成一种效果叫互补配置,互补配置什么叫互补配置呢?我来给大家举一个例子。
05:04
好,我现在呢,来到这个配置文件,我们这个配置文件呢,我们都在配端口,但是端口呢,我们最终生效的是最高优先级的这个8084端口,那好,我在第一优先级里边,我再来配一个叫server.context pass,这个配置的含义呢,就是项目的访问路径,比如我叫BOOT02,但至于这一块能配什么,我们后来再说,但是这个呢,大家注意这是配置。我们在这儿注释一下配置,配置项目的访问路径,好那好,我们把这个配上了以后呢,接下来我来启动项目,我们来启动这个,为了访问径能测出效果,我来写一个CTRL。我们叫hello controller,好,这呢我们来写一个rest controller,然后呢,我们来写一个hello方法访问hello请求,给浏览器给一串hello return一个。
06:12
Hello。好,按request我们来处理请求哈,请球。我们来访问一下,我来启动这个程序。我们启动呢,首先看到8084端口有效果,那是用到最高优先级的这个8084,没问题,我再来访问hello请求,那我们来访问那就是local host local host8084,首先不是8080端口是8084,但是呢,你要访问八零八四项的哈,不行,我们得带上项目名,哎,我们叫BOOT02,我们指定了项本回撤,我们发现,诶这就能起作用了,然后呢,他们会形成一个互补配置,比方说呢,大家文件的内容,高优先级的用高优先级,没有配置的可以用低优先级来形成咱们整个互补配置,这个呢还是非常方便的,哎,我们可以用高优先级只覆盖一些部分内容,那么低优先级呢,配置全部内容等等等等,特别是有一个我们呢,还可以通过一个叫spring con location来改变默认的配置文件位置。
07:32
哎,我们还可以通过咱们这个con location来改变默认的配置文件位置,这个改变怎么做呢?我来给大家举一个例子,首先如果我们把这个写到我们这个配置文件里边,哎,你不管写哪里,这都是没啥用的,比我来给大家举一个例子,Conflict比location,假设呢,我们来把我们这个配置文件,我来给某一个盘,比如呢,我们给给G盘,我来复制一份我们这个配置文件呢,我们就叫啊不开,我们就是8085端口,我想用8085端口,然后呢,我们来把它的这个路径。
08:16
拿过来这盘下的这个配置文件。好,因为这个斜杠呢是转移字符。我们用它,它然后呢,我们来启动,看能不能用到这盘上的它。如果用到,那就应该是8085端口。但是我们看到还是8084,所以呢,我们这个指定配置文件的位置怎么指定呢?我们是在运维的时候,比如我们将项目已经发布了,项目打包了,项目打包好以后。我们可以,我们可以使用使用什么呢?命令行,命令行参数的形式,启动项目的时候来指定配置文件的新位置,然后呢,还是一句话,这个配置文件指定的配置文件。
09:16
和默认加载的这些配置文件会一起共同起作用,一起起作用。会共同起作用。作用形成互配置。来,我来给大家演示一下这个效果,我们把项目呢来打包一下。我们来在我们这个里边,我来打包我们这个项目,好,我们这个零二我来打包。我们这个项目打包以后呢,稍等一下。哎,我们看到呢,他这个打包成功,他会给我们放在target给他下的这个账,好来F刷新一下。
10:09
好来看到呢这一块呢,有一个这个这我来CTRLC复制来,嗯,我们也不用复制了,那就直接访问它,给它目录吧,这儿呢有一个便捷的控制台,我们用它,好现在呢访问的就是WB02项目,我们来CD镜target里边,然后呢,我们看到target里边有我们这个炸包,而我呢,现在要执行这个炸包,咋执行呢?都是va到这样命令,哎,我们来spring boot这个,但是呢,我来给你手动指定一下spring.con.location来命令和参数呢,都是杠杠,好我们把这个这盘路径放在这。等于。哎,我们来把它粘贴进来,然后呢,我来推车启动。来看一下。
11:00
哎,现在启动起来在哪啊,是不是8085端口啊,那我就来访问8085,关键是呢,我们指定的配置文件也只规定了端口,而我们这个路径呢,是在我们低优先级的这一块规定路径的,看能不能起作用啊,推车也是可以的,这个特性啊在我们运维的时候也是非常的好用,比如我们把项目已经打包成功了,那么呢,但是由于我们在后来运行的时候可能需要修改一些配置,怎么办呢?我们只需要编写少量的这个配置,我们呢,把项目重新启动,让它来加载我们新改的这个配置,那么项目原来的配置也会再我们新改的配置呢,也会应用上,我们不需要把整个项目重新改完以后再打包再运行,这就是呢,我们配置文件的加载位置,哎,从高到低哎,依次往下加载,然后呢,形成互补配置。
我来说两句