仅供引用:我发誓没有激活配置文件配置,例如 -D 或运行配置
目标
当应用程序在没有任何激活配置文件的情况下启动时,dev
配置文件将默认激活。
问题
我已经设置了 spring.profile.default = dev
,并且我希望 dev 配置文件被激活。但事实并非如此。
我做了什么
运行环境
Spring-Boot 版本:2.1.2 发布
我被推荐的内容
1) 如何在 Spring Boot 应用程序中使用配置文件 - https://www.javacodegeeks.com/2019/07/profiles-spring-boot-application.html#respond
这是我所做的代码
/resources/application.properties
spring.profiles.default= dev
application.environment=This is a "Default" Environment
/resources/application-dev.properties
application.environment=This is a "dev" Environment
server.port= 8082
/ProfileController.java
@RestController
@RequestMapping("/v1")
public class ProfileController {
@Value("${application.environment}")
private String applicationEnv;
@GetMapping
public String getApplicationEnv(){
return applicationEnv;
}
}
结果
localhost/v1 => 这是一个“默认”环境
和
我发现默认配置文件已正确设置为 dev
。
这是我的 spring 启动日志。
2019-10-16 23:17:02.926 INFO 64099 --- [ main] c.e.s.SpringbootdemoappApplication : No active profile set, falling back to default profiles: dev
为服务器端口添加另一个日志
2019-10-17 00:25:03.837 INFO 68318 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8083 (http)
我添加的原因是它似乎不是与注入(inject)相关的问题。
是时候结束这个问题了
我想要实现的第一个目标是更改默认配置文件。
从 spring 文档( https://docs.spring.io/spring/docs/4.2.0.RELEASE/spring-framework-reference/htmlsingle/#beans-definition-profiles-default )开始,可以通过在 application.properties
中设置 spring.profiles.default
来更改默认配置文件。
但这似乎是一种错误(感谢@Antoniossss)。即使我已在 application.properties
中进行了设置,并且控制台显示No active profile set,fall back to default profile: dev
。
但是 dev
配置文件仍然没有激活。
我发现更改默认配置文件应该在加载 application.properties 之前完成。
这意味着如果在application.properties
中描述了更改默认配置文件,那就太晚了。(不知道为什么,我不明白,因为Spring中有很多层......)
如果使用 -Dspring.default.profile = dev
设置默认配置文件,则它可以正常工作。
来自https://github.com/spring-projects/spring-boot/issues/1219 :
You can't change the default profile by declaring it in a config file. It has to be in place before the config files are read.
最佳答案
问题是您在加载应用程序后传递此属性,您需要在应用程序启动时提供此属性
将其作为 JVM 参数传递
java -jar -Dspring.profiles.default=dev myproject.jar
作为环境变量传递
java -jar myproject.jar --spring.profiles.default=dev
系统变量
SPRING_PROFILES_DEFAULT=dev
关于java - 在 application.properties 中使用 spring.profile.default 时,Spring Boot 不加载默认配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58416384/