【发布时间】:2020-02-13 09:59:26
【问题描述】:
仅供参考:我发誓没有激活配置文件配置,例如 -D 或运行配置
目标
当应用程序在没有任何激活配置文件的情况下启动时,dev 配置文件被默认激活。
问题
我已设置 spring.profile.default = dev ,我希望开发配置文件已激活。但事实并非如此。
我做了什么
Run Environment
Spring-Boot 版本:2.1.2 发布
What I'm referred
1) 如何在 Spring Boot Application 中使用配置文件 - 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-boot 日志。
2019-10-16 23:17:02.926 INFO 64099 --- [main] c.e.s.SpringbootdemoappApplication:未设置活动配置文件,回退到默认配置文件:dev
为服务器端口添加另一个日志
2019-10-17 00:25:03.837 INFO 68318 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer:Tomcat 使用端口初始化:8083 (http)
我添加的原因是它似乎与注入无关。
是时候结束这个问题了
我要实现的第一个目标是更改默认配置文件。
从 spring docs(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, falling back to default profiles: dev。
然而,dev 个人资料仍未激活。
我发现应该在加载 application.properties 之前更改默认配置文件。
这意味着如果在application.properties 中描述了更改默认配置文件,那就太晚了。(IDK 为什么,我不知道,因为 Spring 中有很多层......)
如果使用 -Dspring.default.profile = dev 设置了默认配置文件,则它可以正常工作。
来自https://github.com/spring-projects/spring-boot/issues/1219:
您不能通过在配置文件中声明来更改默认配置文件。它必须在读取配置文件之前就位。
【问题讨论】:
-
你能试试
spring.profiles.active=dev吗? -
@HasanCanSaral 你的意思是在
application-dev.properties中添加spring.profile.active=dev吗? -
是的。它按预期工作。如果您有
spring.profiles.active=someOtherProfile,您将激活someOtherProfile。如果您一无所有,请通过spring.profiles.default将您的后备设置为dev。 -
@HasanCanSaral 所以,我没有设置任何有效的个人资料。我希望
dev将被激活。因为默认配置文件是dev -
这是/曾经是一个错误 - github.com/spring-projects/spring-boot/issues/1219
标签: java spring-boot spring-profiles