问题:
如果我们需要修改端口号为其他的端口号,那么我们可以在.yml文件中通过server port 直接对端口进行修改。但是如果我们交给运维或者客户的是一个jar包而不是项目的源文件,他们没有办法直接修改这些属性,这时候就需要SpringBoot属性配置相关的知识了。
我们之前学习的是在resource目录下的application.yml文件中写,然而这种配置方式只是属性配置中的一种方式。
如图:配置文件是在项目源码中提供的,把项目打包成jar包是无法直接修改属性的
修改属性配置方法
1.命令行参数方式
在运行jar包时在后面添加参数 --键=值 修改端口就是添加 --server.port=10010
解释:
添加的这个参数会添加给启动类的main(String [] args)方法 ,使用args数组接收,启动应用的时候又把这个数组传递给run方法,如黑马程序员视频资料中的ppt展示的:
2. 环境变量方式
在用户的环境变量中添加属性,变量的键和值要和SpringBoot的键和值保持一致。SpringBoot的程序会自动读取这些系统的环境变量,从而使用这些变量。
如图:
设置之后,要把命令提示符窗口关掉,再重新打开命令提示符窗口,重新跑一次项目,端口才会改变。(一定要关闭窗口再重新进入!!!不然端口不会改变!!!)
3.外部配置文件方式
如果修改的属性多了,以上两种方法使用起来非常不方便。但是SpringBoot提供一种外部配置文件的方式来配置属性,可以很好的解决这个问题。
在jar包所在目录下提供一个application.yml文件,在这个里面可以批量的配置需要修改的属性。配置好之后,jar包提起来之后,SpringBoot会自动读取这个配置文件的配置。
把项目下的application.yml配置文件复制一份,放到jar包所在目录下
修改属性的时候,使用记事本打开jar包所在目录下的配置文件,可以把里面的配置全部删掉,然后只写自己要修改的属性配置 。
重新运行项目。
配置优先级
如果同时使用这四种方式配置相同的属性,那么谁会生效?这和配置的优先级有关系!优先级最高的生效。
- 命令行参数
- 操作系统环境变量
- Jar包所在目录下的application.yml
- 项目中resources目录下的application.yml
优先级从高到低:
- 命令行参数
- 操作系统环境变量
- Jar包所在目录下的application.yml
- 项目中resources目录下的application.yml