提问者:小点点

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


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:

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


共3个答案

匿名用户

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

通过它作为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;