在 application.properties 中使用 spring.profile.default 时,Spring Boot 不加载默认配置文件

Min*_*ang 5 java spring-profiles spring-boot

仅供参考:我发誓没有激活配置文件配置,例如 -D 或运行配置

\n\n

目标

\n\n

当应用程序在没有任何激活配置文件的情况下启动时,dev配置文件将默认激活。

\n\n

问题

\n\n

我已经设置了spring.profile.default = dev,并且我希望开发配置文件被激活。但事实并非如此。

\n\n

我做了什么

\n\n

Run Environment

\n\n

Spring-Boot-版本:2.1.2 发布

\n\n

What I\'m referred

\n\n

1) 如何在 Spring Boot 应用程序中使用配置文件 - \n https://www.javacodegeeks.com/2019/07/profiles-spring-boot-application.html#respond

\n\n

这是我所做的代码

\n\n

/resources/application.properties

\n\n
spring.profiles.default= dev\n\napplication.environment=This is a "Default" Environment\n
Run Code Online (Sandbox Code Playgroud)\n\n

/resources/application-dev.properties

\n\n
application.environment=This is a "dev" Environment\nserver.port= 8082\n
Run Code Online (Sandbox Code Playgroud)\n\n

/ProfileController.java

\n\n
@RestController\n@RequestMapping("/v1")\npublic class ProfileController {\n\n    @Value("${application.environment}")\n    private String applicationEnv;\n\n    @GetMapping\n    public String getApplicationEnv(){\n        return applicationEnv;\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果

\n\n

localhost/v1 => 这是一个“默认”环境

\n\n

\n\n

我发现默认配置文件设置正确dev

\n\n

这是我的春季启动日志。

\n\n
\n

2019-10-16 23:17:02.926 INFO 64099 --- [ main] cesSpringbootdemoappApplication :没有活动配置文件集,回退到默认配置文件:dev

\n
\n\n

为服务器端口添加另一个日志

\n\n
\n

2019-10-17 00:25:03.837 INFO 68318 --- [ main] osbwembedded.tomcat.TomcatWebServer :Tomcat 使用端口初始化:8083 (http)

\n
\n\n

我添加的原因是它似乎不是与注入相关的问题。

\n\n

是时候结束这个问题了

\n\n

我想要实现的第一个目标是更改默认配置文件。\n来自 spring 文档(https://docs.spring.io/spring/docs/4.2.0.RELEASE/spring-framework-reference/htmlsingle/#beans-definition -profiles-default ),默认配置文件可以按照spring.profiles.default中的设置进行更改application.properties

\n\n

但这似乎是一个错误(感谢@Antoniossss)。即使我已经设置application.properties并且控制台显示No active profile set, falling back to default profiles: dev。\n但是dev配置文件仍然没有激活。

\n\n

我发现的事情是更改默认配置文件应该在加载 application.properties 之前完成

\n\n

这意味着如果在 中描述了更改默认配置文件application.properties,那就太晚了。(不知道为什么,我无法弄清楚,因为 Spring 中有很多层......)\n如果 d\xc3\xa9faut 配置文件是设置使用-Dspring.default.profile = dev,它工作正常。

\n\n

来自https://github.com/spring-projects/spring-boot/issues/1219

\n\n
\n

您无法通过在配置文件中声明默认配置文件来更改它。它必须在读取配置文件之前就位。

\n
\n

Dea*_*ool 4

问题是您在加载应用程序后传递此属性,您需要在应用程序启动时提供此属性

将其作为 JVM 参数传递

java -jar -Dspring.profiles.default=dev myproject.jar
Run Code Online (Sandbox Code Playgroud)

作为环境变量传递

java -jar myproject.jar --spring.profiles.default=dev
Run Code Online (Sandbox Code Playgroud)

系统变量

SPRING_PROFILES_DEFAULT=dev
Run Code Online (Sandbox Code Playgroud)