springboot-多环境配置文件

242 阅读2分钟

创建两个环境的配置文件

创建两个环境的配置文件:开发和生产。

image.png

内容不一样,比如数据库的用户名密码不一样。

idea怎么知道是哪个环境?

找到运行配置

image.png

找到profile配置项(profile就是环境的意思),值为dev。因为idea是开发环境嘛,所以直接填写dev即可。 image.png

到这里其实就已经配置完成了,启动即可找到对应环境的配置文件。而且启动日志也会打印是哪个环境。

2023-08-20 23:50:42.662  INFO 40992 --- [           main] com.itranswarp.Application               : The following 1 profile is active: "dev"

生产环境

开发环境ok之后,我们现在要打包发布到生产环境,这个时候怎么办?

基于maven的命令的参数-Pprod。

clean package -DskipTests -Pprod

-P参数就是profile参数,即打包的时候使用哪个环境的配置文件。


除了maven命令需要添加入参,pom文件还需要配置入参。说白了,就是二者结合才能生效。

小结

1、多环境配置文件的文件名字都是按固定格式来,因为约定大于配置。

2、正因为约定大于配置,所以不管是idea,还是maven打包命令,配置环境参数之后,就会自动找到对应环境的配置文件。

公共配置

如果有公共配置,也可以放在application.yml文件。所谓公共配置,就是不同环境的公共配置项和值都一样,那么就可以放在公共配置文件,说白了,就是只在一个地方维护。

日志

启动项目之后,如果控制台出现看不到日志的情况,但是项目是启动成功并且可以正常访问,那么有可能是日志配置文件里的profile配置的不对。

比如,检查logback-spring.xml里的profile配置是否正确。因为有可能写到其他地方去了。

<springProfile name="native">
  <root level="INFO">
   <appender-ref ref="CONSOLE" /> <!-- native配置即本地配置,就写日志到控制台 -->
  </root>
 </springProfile>
 
 <springProfile name="!native">
  <root level="INFO">
<!--   <appender-ref ref="APP_LOG" />--> <!-- 非native配置,就写日志到文件 -->
   <appender-ref ref="CONSOLE" />
  </root>
 </springProfile>