序
一般情况springboot项目打包会把应用配置文件一起打包进去。
这样的话我们如果要修改一些配置的话就得重新打包部署。
其实SpringBoot是支持外部化配置的,这样能更方便的来自定义我们的配置。
接下来就让我们来看看怎么使用。
SpringBoot外部化配置
SpringBoot共支持14种外部化配置,可以在SpringBoot官方文档中找到,如下图 接下来我们就挑几个常用的来进行说明
通过SpringApplication.setDefaultProperties设置
@PropertySource注解配置
应用配置文件
就是application.yml和application.properties文件,也包括他们带有后缀表示不同环境下的文件application-{profile}.yml和application-{profile}.properties
注意:如果同时含有相同名称的.yml和.properties应用配置文件,则以properties为准。
系统环境变量
就是配置在/etc/profile文件中的变量。(Linux)
比如我们可以配置一条属性表示当前OS启用什么环境的应用配置文件:SPRING_PROFILE_ACTIVE=test
Java系统变量
也就是-D表示的变量,可以通过System.getProperties()来获取。
-D开头的属性需要放在命令的jar名称之前
如:java -jar -Dtest="hello word" app.jar (放在jar名称之后是不生效的,有空格记得加引号)
命令行
SpringBoot可以解析"--"开头格式的属性(源码:SimpleCommandLineArgsParser#parse)
一般放在jar名称之后
如:java -jar app.jar --spring.profiles.active=test
注意:善于思考的小伙伴看到这肯定会提出一个问题,那就是优先级的问题。
那么上述这些配置方式是按文档编写顺序,后面的会覆盖前面的配置。
自动查找应用配置文件
SpringBoot还有一个功能,会自动在规定路径来查找我们的application.yml配置文件。
我们通常都是把applicaiton.yml文件放在resources目录下,其实还有几种方式:
类路径(classpath)
第一种就是在我们的类路径根目录下
注意:类路径不止表示resources目录,也表示根包的目录,但规范我们一般把配置文件和源代码是分开放的,所以可以表示就是放在resouces根目录下。
也可以放在类路径的/config目录下。
当前目录
表示启动jar包时的当前目录
就当前目录下
当前目录的/config目录下
当前目录的/config目录下的子目录(这个其实我也没很理解,如有知晓的同学可以评论告知)
这个自动查找应用配置文件也有优先级,按文档编写顺序,后面的会覆盖前面的配置。
我自己使用的话习惯在部署jar的目录下创建一个config目录,把应用配置文件放进去。
这样就会比较方便的改些数据库配置啊,自定义配置等
好了,今天我们的文章就到这儿了,感谢观看。如果有说的不对的地方请不吝赐教。