前两天入职了新的公司,用的spring boot框架,启动项目时候报错前两天入职了新的公司,用的spring boot框架,启动项目时候报错如下图所示:
后来了解到,由于大多项目都要区分测试环境和生产环境,所以会有dev和prod等配置文件,像这样:
正常的application.properties文件里,应该有spring.profiles.active这个配置这个配置,指定项目启动时用哪个配置文件,
比如spring.profiles.active=dev,说明启动时使用application-dev.properties配置文件。
但是这个项目的application.properties没有指定这个配置,他们会在启动服务器时加上启动参数来指定,idea版如图所示:
结论:
- 各个环境公共的配置写在application.properties中
- 各个模块独有的配置配置在自己的application-{xxx}.properties文件中
- 程序读取的时候优先读取application.properties中选中的profile的配置,若读不到才会从application.properties去读
(结论部分摘自链接https://www.jb51.net/article/113202.htm)
解决这个问题之后想起来去看了之前项目的配置,发现了另外一种写法,就是先在application.properties写入
spring.profiles.active=@spring.profiles.active@
然后在pom.xml里配置上@spring.profiles.active@的内容:
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<spring.profiles.active>be-dev</spring.profiles.active>
</properties>
</profile>
</profiles>
这样也是一种方式,暂时还没太明白这几种配置方式各自的好处和区别,有了解的朋友可以评论我,如果哪天有闲了我弄明白也会再次更新,先这样。