gpt4 book ai didi

java - 在Java中加载资源中不同文件夹下的属性

转载 作者:行者123 更新时间:2023-12-01 18:57:49 24 4
gpt4 key购买 nike

我的资源文件夹下放置了一些属性文件。

src/main/java
src/main/resources-
prod
-> application.properties
prod-brand-1
-> application.properties
prod-brand-2
-> application.properties
application-default.properties (directly placed under resources folder)

在我的一个 Java 类中,我正在初始化一个环境 bean,它将使用 @PropertySource 注释加载属性文件。

@Configuration
@PropertySource({"classpath:application-default.properties",
"classpath:prod/application.properties",
"classpath:prod-brand-1/application.properties",
"classpath:prod-brand-2/application.properties"
})
public class PropertyConfig{
//
}

我能够加载application-default.properties,因为它直接放置在资源文件夹下,但不能加载放置在prod、prod-1、prod-等目录下的那些2..

在实际场景中,下面的内容必须替换为一些占位符,并且其值(prod,prod-brand-1,prod-brand-2)需要通过环境变量注入(inject)。

@PropertySource({"classpath:prod/application.properties""classpath:prod-brand-1/application.properties""classpath:prod-brand-2/application.properties"})

应该是这样的:-

@PropertySource({"classpath:{dir}/application.properties"})

请建议我如何将占位符与@PropertySource一起使用。

最佳答案

您可以对同一位置(资源文件夹)中的文件进行这样的尝试

@PropertySources({
@PropertySource("classpath:foo.properties"),
@PropertySource("classpath:bar.properties")
})
public class PropertiesWithJavaConfig {
//...
}

对于像您所说的多个位置,您可以尝试这些代码

  @Configuration
public class PropertiesConfiguration {
@Bean
public PropertyPlaceholderConfigurer properties() {
final PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
// ppc.setIgnoreUnresolvablePlaceholders(true);
ppc.setIgnoreResourceNotFound(true);

final List<Resource> resourceLst = new ArrayList<Resource>();

resourceLst.add(new ClassPathResource("myapp_base.properties"));
resourceLst.add(new FileSystemResource("/etc/myapp/overriding.propertie"));
resourceLst.add(new ClassPathResource("myapp_test.properties"));
resourceLst.add(new ClassPathResource("myapp_developer_overrides.properties")); // for Developer debugging.

ppc.setLocations(resourceLst.toArray(new Resource[]{}));

return ppc;
}

关于java - 在Java中加载资源中不同文件夹下的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59661283/

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