注意:我发誓没有类似于-D或运行配置的激活配置文件
目标
当应用程序在没有激活任何配置文件的情况下启动时,默认激活dev
配置文件。
问题
我设置了spring.profile.default = dev
,我期望会激活dev配置文件,但实际上没有。
我的操作
运行环境
Spring-Boot版本:2.1.2 Release
参考资料
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-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文档中(https://docs.spring.io/spring/docs/4.2.0.RELEASE/spring-framework-reference/htmlsingle/#beans-definition-profiles-default),默认配置文件可以通过在application.properties
中设置spring.profiles.default
来更改。
但似乎有点bug(感谢@Antoniossss)。即使我在application.properties
中设置了它,控制台也显示没有活动配置文件集,退回到默认配置文件集: dev
。
但是仍然没有激活dev
配置文件。
我发现的事情是更改默认配置文件应该在加载application.properties
之前完成。
这意味着如果更改默认配置文件是在application.properties
中描述的,则为时已晚。(不知为何,因为Spring有很多层...)
如果使用-Dspring.default.profile=dev
设置了默认配置文件,则可以正常工作。
来自https://github.com/spring-projects/spring-boot/issues/1219:
您不能通过在配置文件中声明来更改默认配置文件。在读取配置文件之前必须准备好它。
spring.profiles.active
。 @MinwooKang https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html - Ryuzaki L