FYI:我发誓没有激活配置文件配置,如-D或运行配置
当应用程序在没有任何激活配置文件的情况下启动时,默认情况下会激活dev
配置文件。
我已经设置了Spring. profile.default=dev
,我希望开发配置文件被激活。但事实并非如此。
运行环境
Spring-Boot-version:2.1.2发布
我所提到的
1)如何在Spring Boot应用程序中使用配置文件-https://www.javacodegeeks.com/2019/07/profiles-spring-boot-application.html#respond
这是我所做的代码
/资源/application.properties
spring.profiles.default= dev
application.environment=This is a "Default" Environment
/资源/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:没有活动配置文件集,回退到默认配置文件:dev
2019-10-17 00:25:03.837 INFO 68318 --- [ main]o.s.b.w.嵌入.tomcat.TomcatWebServer:Tomcat初始化端口:8083(超文本传输协议)
我添加的原因是它似乎不是与注射相关的问题。
我想要实现的第一个目标是更改默认配置文件。从Spring文档(https://docs.spring.io/spring/docs/4.2.0.RELEASE/spring-framework-reference/htmlsingle/#beans-definition-profiles-default)中,可以将默认配置文件更改为在application.properties
中设置Spring. profile.default
。
但这似乎有点bug(谢谢@Antoniossss)。即使我在application.properties
中设置了它,控制台显示没有设置活动配置文件,回退到默认配置文件:dev
。然而dev
配置文件仍然没有激活。
我发现改变默认配置文件应该在加载application.properties之前完成。
这意味着如果在application.properties
中描述了更改默认配置文件,那就太晚了。(IDK为什么,我不知道,因为Spring中有这么多层…)如果使用-Dprint. default.profile=dev
设置了défaut配置文件,它可以正常工作。
从https://github.com/spring-projects/spring-boot/issues/1219:
您不能通过在配置文件中声明来更改默认配置文件。它必须在读取配置文件之前到位。
问题是您在加载应用程序后传递此属性,您需要在应用程序启动时提供此属性
通过它作为JVMargs
java -jar -Dspring.profiles.default=dev myproject.jar
作为环境变量传递
java -jar myproject.jar --spring.profiles.default=dev
系统变量
SPRING_PROFILES_DEFAULT=dev
您使用Spring. profile.default=dev
将默认配置文件回退设置为dev
。如果您有Spring.profile.active=一些其他配置文件
,您将激活一些其他配置文件
。
2019-10-16 23:17:02.926 INFO 64099 --- [ main]c.e.s.SpringbootdemoappApplication:没有活动配置文件集,回退到默认配置文件:dev
此日志表示dev
配置文件是活动的配置文件,因为您没有激活任何显式配置文件。
您只配置了默认配置文件。您需要在您的应用属性中设置一个活动配置文件,例如Spring. profile.active=dev
。对于注入当前活动配置文件,
@Value("${spring.profiles.active}")
private String currentActiveEnv;