各位小伙伴大家好呀┗( ▔, ▔ )┛,马上过年了,但是感觉没啥期待的哈哈哈哈哈,现在的年说实话真的挺没劲的呜呜。
言归正传,我们大家在使用springboot时难免会写各种各样的配置信息,比如port,jdbc啊这些,用的配置文件由yml、properties等,我今天就来说一说配置文件中的分类、优先级是怎么样的─=≡Σ(((つ•̀ω•́)つ
1.配置文件的优先级
在我们的项目打包好了之后,如果我们想改变一些配置或者增加一些配置,我们可以使用修改或者增加临时配置信息的方式实现
这里我将我的一个boot的demo打包,在这里我将项目的最初访问端口设置成80端口
然后我们找到我们打包好后的jar包,在jar包所在目录输入cmd进入黑窗口,通过黑窗口来启动我们打包好的项目,这是我们没有增加临时属性的启动端口,可以看到是80端口
但是如果我们增加了临时属性呢?究竟谁会生效?
1.方式一:在黑窗口增加临时属性
Ps:临时属性添加方式:java –jar 工程名.jar –-属性名=值 ; 临时属性必须是当前boot工程支持的属性,否则设置无效
这里我们修改了端口号为81,运行后发现临时属性覆盖了最初我们定义的端口号,对于没有改变的配置则是加以保留,这也很好说明了临时属性的优先级是大于配置文件的
2.方式二:在开发环境中增加临时属性
在进行这一种方式增加前,我们先在黑窗口ctrl + c关掉我们刚才启动的项目,否则可能会发生端口复用。下面我们在idea中来进行临时属性的配置
在idea中运行项目
2.配置文件的分类
springboot的配置文件分为4个等级也是四类,4个等级分别是
- 类路径下配置文件(我们开发时一直使用的是这个,也就是resources目录中的application.yml文件)
- 类路径下config目录下配置文件
- 程序包(jar包)所在目录中配置文件
- 程序包(jar包)所在目录中config目录下配置文件
为啥配置文件还要分等级?不都是照样用?其实我开始也疑惑,但是我们这样想或者就想通了,如果你是为银行开发一个系统,你说那银行会让你知道银行钱库的密码吗(ಥ_ಥ) 不会吧,我不配知道〒▽〒,在一个公司经理所用的配置文件和我们程序员用的配置文件肯定是不一样的,可以这样说明一下
-
file :config/application.yml 【最高】 给项目经理用的
-
file :application.yml 程序员用的
-
classpath:config/application.yml
-
classpath:application.yml 【最低】
*这样一看,程序员果然是活活打工人呀o( ̄3 ̄)o
1.首先我们来看看1和2的优先级,我们在resource目录下创建一个config目录,然后在里面在创建一个application.yum配置文件
在config目录中的配置文件我们配置端口为81
在resource目录下的配置文件我们配置端口为80
在idea中启动项目
我们看到config下的配置文件优先级是高于resource下的配置文件的
2.我们再来比较3和4的优先级
同样的我们创建和在idea中一样的配置,只不过我们这次是在jar包所在的目录下创建与idea中同样的配置结构,一个config目录下的配置,一个直接将配置放在jar包所在的目录下。
另一个与jar包同一级的配置
运行jar包
我们发现访问82端口可以,80端口不可以,也就说明了启动jar包时配置的优先级和在idea中启动时配置的优先级可以说类似的,同样是config目录下的配置文件优先级更高!
3.总结
其实可通过几句话来总结了,但是为了举例实际展示出,需要啰嗦更多,其实就是临时属性优先级是要高于我们的初始化配置,然后在初始化配置时,idea中resource目录下config目录下的配置高于直接在resource目录下的配置,在jar包所在的目录下配置优先级和idea中是一样的
这就是一个简单的注意点啦(ಥ_ಥ) 我感觉我说的有点啰嗦哈哈哈哈哈哈,各位大哥不要介意呜呜,提前祝大家新年快乐啦~谢谢耐心观看(σ゚∀゚)σ…:*☆哎哟不错哦