gpt4 book ai didi

java - Spring Boot - 外部化属性

转载 作者:行者123 更新时间:2023-11-30 11:14:18 25 4
gpt4 key购买 nike

我有一个构建可执行 war 的 Spring Boot 项目,并在 中配置了一个 application.properties 文件和一个 application-dev.properties源代码/主要/资源

application.properties中的第一行是spring.profiles.active=dev,它触发包含application-dev.properties 按预期运行时。

我的问题是,我似乎无法使用外部属性源覆盖这些属性(在一切都变得困惑/紧张之后)。为了进行简单的调试,我在项目的根目录中创建了一个文件 settings.properties,并在其中指定了 spring.profiles.active=dev,deploy 希望也触发“部署”配置文件。

但是,当我运行以下命令时:

java -jar target/project-0.1.0-LOCAL-NA.war --spring.config.location=file:./settings.properties

部署配置文件从未启用。我以为我可以使用以前的版本(现在运行 1.1.6.RELEASE,来自 1.0.2.RELEASE),但回滚也无济于事。

我是否遗漏了一些明显的东西?

更新 1:

所以在调试时我发现 Environment.getActiveProfiles() 只会返回 1 个项目,即使有多个 Activity 配置文件(在本例中为开发和部署)。所以,虽然我的报告只列出了开发,但也有部署。

我已经通过使用环境变量而不是配置文件的属性文件再次运行,但我想只使用文件来设置所有内容......

最佳答案

当使用 jar 文件启动时,我们发现您不能使用“-D”来注入(inject)系统变量。您必须使用“--”。

假设您将您的应用编码为使用配置文件,这对我们有用

    java -jar myapplication.jar
--spring.profiles.active=override
--spring.config.location=file:/path/to/file/application-override.properties

关于java - Spring Boot - 外部化属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25963919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com