Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring boot在application.properties中使用spring.profile.default时未加载默认配置文件_Java_Spring Boot_Spring Profiles - Fatal编程技术网

Java spring boot在application.properties中使用spring.profile.default时未加载默认配置文件

Java spring boot在application.properties中使用spring.profile.default时未加载默认配置文件,java,spring-boot,spring-profiles,Java,Spring Boot,Spring Profiles,仅供参考:我发誓没有激活配置文件配置,如-D或运行配置 目标 当应用程序在没有任何激活配置文件的情况下启动时,dev配置文件默认激活 问题 我已经设置了spring.profile.default=dev,我希望dev配置文件被激活。但事实并非如此 我所做的 运行环境 Spring启动版本:2.1.2版本 我所指的内容 1) 如何在Spring Boot应用程序中使用配置文件- 以下是我所做的代码 /resources/application.properties spring.profile

仅供参考:我发誓没有激活配置文件配置,如-D或运行配置

目标 当应用程序在没有任何激活配置文件的情况下启动时,
dev
配置文件默认激活

问题 我已经设置了
spring.profile.default=dev
,我希望dev配置文件被激活。但事实并非如此

我所做的
运行环境

Spring启动版本:2.1.2版本

我所指的内容

1) 如何在Spring Boot应用程序中使用配置文件-

以下是我所做的代码

/resources/application.properties

spring.profiles.default= dev

application.environment=This is a "Default" Environment
application.environment=This is a "dev" Environment
server.port= 8082
/resources/application-dev.properties

spring.profiles.default= dev

application.environment=This is a "Default" Environment
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

这是我的春季开机日志

2019-10-16 23:17:02.926信息64099---[main]c.e.s.SpringbootdemoappApplication:未设置活动配置文件,返回默认配置文件:dev

为服务器端口添加另一个日志 2019-10-17 00:25:03.837信息68318---[main]o.s.b.w.embedded.tomcat.TomcatWebServer:tomcat已用端口初始化:8083(http)

我添加的原因是它似乎与注射无关

是时候结束这个问题了 我想要实现的第一个目标是更改默认配置文件。 在spring docs()中,可以将默认配置文件更改为
application.properties
中的设置
spring.profiles.default

但这似乎有点bug(谢谢@antoniosss)。即使我在
application.properties
中设置了它,并且控制台显示
没有活动的配置文件集,返回到默认配置文件:dev
。 但是,
dev
profile仍未激活

我发现,在加载application.properties之前应该更改默认配置文件

这意味着,如果在
application.properties
中描述了更改默认配置文件,那就太晚了。(IDK为什么,我不明白,因为Spring中有这么多层…) 如果使用
-Dspring.default.profile=dev
设置了défaut配置文件,则该配置文件工作正常

发件人:

无法通过在配置文件中声明来更改默认配置文件。它必须在读取配置文件之前就位


您只配置了默认配置文件。 您需要设置一个活动配置文件,如
spring.profiles.active=dev
在应用程序属性中。对于注入电流活动剖面

@Value("${spring.profiles.active}")
private String currentActiveEnv;

您可以使用
spring.profiles.default=dev
将默认配置文件回退设置为
dev
。如果您有
spring.profiles.active=someOtherProfile
,您将激活
someOtherProfile

2019-10-16 23:17:02.926信息64099---[main] c、 e.s.SpringbootdemoappApplication:无活动配置文件集,掉落 返回默认配置文件:dev


此日志指出,
dev
配置文件是活动的,因为您没有激活任何显式配置文件。

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

将其作为JVM参数传递

java -jar -Dspring.profiles.default=dev myproject.jar
作为环境变量传递

java -jar myproject.jar --spring.profiles.default=dev
SPRING_PROFILES_DEFAULT=dev
系统变量

java -jar myproject.jar --spring.profiles.default=dev
SPRING_PROFILES_DEFAULT=dev

你能试试
spring.profile.active=dev
吗?@hasancansal你的意思是在
application-dev.properties
中添加
spring.profile.active=dev
?是的。它正在按预期工作。如果您有
spring.profiles.active=someOtherProfile
您将激活
someOtherProfile
。如果你什么都没有,通过
spring.profiles.default
你将你的回退设置为
dev
@hasancansal,所以我没有设置任何活动的配置文件。我希望
dev
将被激活。因为默认配置文件是
dev
它是一个bug-我能问一下为什么吗?默认配置文件与活动配置文件不同?在我看来,如果没有激活的配置文件,默认配置文件应该是激活。是吗?@minwookan在代码片段中,您提到默认配置文件为dev。而且dev似乎已正确激活。您是否在问为什么在回答中没有得到“这是一个“开发”环境”?这可能会发生,因为您正在向变量注入@Value(${application.environment}),而不是活动配置文件。噢,感谢您激发了新的见解。。可能是。。但是在
dev
配置文件中,我设置了
server.port=8082
,但是tomcat是在8083端口启动的,这在
application.properties
中有描述。这让我更加困惑。如果
dev
配置文件被正确激活,服务器端口应该是8082,对此可能毫无疑问。是的,你是对的。但正如您在结果中所看到的,
应用程序.environment
仍然是
默认值
值。您是否尝试使用
spring.profiles.active
?如果没有明确的配置文件集,我怀疑可能无法加载回退配置文件的属性。我需要在
spring.profiles.active
中输入什么值?但是默认属性(它意味着
application.properties
)加载正确。因为服务器是在我在
application.properties
中描述的端口中启动的
spring profiles active=dev
。正如我所说的,如果您的应用程序返回到默认配置文件(在您的情况下,
dev
),您的
application.properties
可能会被加载,而不是
application-dev.properties
。可能需要显式设置活动配置文件。噢,
退回到默认配置文件:dev
意味着