gpt4 book ai didi

java - 具有外部属性的 Spring Boot 配置文件

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

我想在 Spring Boot 中设置 3 个配置文件:生产、开发、使用外部配置文件进行测试。

应用程序类:

@SpringBootApplication
public class Application {

public static void main(String[] args){
SpringApplication.run( Application.class, args );
}
}

AppConfig 类:

@Configuration
@PropertySources({
@PropertySource("config/application.yml"),
@PropertySource(value = "file:${external.config}")
})

@ConfigurationProperties
public class AppConfig {

}

配置/application.yml:

---
spring.profiles: production
endpoints.enabled: false
---
spring.profiles: development,test
endpoints.enabled: true
info.version: @project.version@
info.test: Test dev or test
info.profile: ${spring.profiles.active}
---

external.config: ${user.home}/.myapp/application.properties

.myapp/application.properties:

spring.profiles.active=production
info.version=5

spring-boot-actuator/info 的输出

{
version: "5",
test: "Test dev or test",
profile: "production"
}

预期输出:

404 because of the endpoints.enabled: false

spring-boot-actuator/env

spring.profiles.active: "production"

最佳答案

您可能应该在 application.yml 文件中添加 classpath: 前缀

无论如何,为什么不在java配置中直接使用spring profile来驱动配置呢? IMO,这会更干净,并使您的属性更加类型安全和重构友好,并且不容易出现拼写错误。

更新:

根据文档,您无法使用 @PropertySource 注释加载 yml 文件:

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-yaml-shortcomings

因此,如果您需要使用文件,则需要使用普通属性文件。您可以使用显示的特定于属性的应用程序属性文件 here .

In addition to application.properties files, profile-specific properties can also be defined using the naming convention application-{profile}.properties.

关于java - 具有外部属性的 Spring Boot 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32537963/

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