gpt4 book ai didi

java - 在 Spring 中,如何让@PropertyResource 优先于任何其他 application.properties?

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

我正在尝试在类路径之外添加外部配置属性资源。它应该覆盖任何现有属性。

但以下不起作用:

@SpringBootApplication
@PropertySource("d:/app.properties")
public class MyClass extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MyClass .class);
}

@Value("${my.property}")
private String myprop;

@PostConstruct
public void init() {
Sysout(myprop);
}
}

src/main/resources/application.properties:

my.property=internal

d:/app.properties:

my.property=external

我启动应用程序时的结果:内部

为什么?

最佳答案

你不能。 @PropertySource 处理有 a well defined precedence order .您可以使用 EnvironmentPostProcessor 以任何方式自定义环境。

我们在 Devoxx 演示文稿中解释了该用例,请参阅 this section of the presentation更多细节。您也可以find the code sample online .

特别是,您会发现,如果您使用 addFirst,您的自定义 PropertySource 将优先于所有内容。但是您也可以实现您的 EnvironmentPostProcessor,这样命令行参数或系统属性仍然会覆盖这些值。我发现这很有用,但您的用例可能有所不同。

关于java - 在 Spring 中,如何让@PropertyResource 优先于任何其他 application.properties?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41462953/

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