gpt4 book ai didi

java - Spring PropertySource 拒绝多次扩展变量

转载 作者:太空宇宙 更新时间:2023-11-04 14:50:18 27 4
gpt4 key购买 nike

我正在尝试通过以下方式创建一个 spring 配置类

@Configuration
@PropertySource(value={"file:${my.dir}/fileone.properties","file:${my.dir}/filetwo.properties"})
@Lazy(value=true)
public class SpringBeans {

@Autowired
Environment env;

@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer ppc = new PropertySourcesPlaceholderConfigurer();
return ppc;
}

@Bean.....
}

问题是变量 ${my.dir} 被扩展,以便它找到 fileone.properties 但它立即抛出

java.io.FileNotFoundException: ${my.dir}/filetwo.properties (No such file or directory)

我正在使用 spring 3.1.1.RELEASE 和 Oracle JDK 7

这是实现中的错误/限制吗?有什么办法可以解决吗?

此外,我找不到像在 xml 中那样在注释中设置ignore-unresolvable=true 的方法,这是默认通过注释完成的吗?

最佳答案

你可以像这样设置ignoreUnresolvable:

@Bean
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = PropertyLoadHelper.getPropertySourcesPlaceholderConfigurer();
propertySourcesPlaceholderConfigurer.setIgnoreUnresolvablePlaceholders(true);
return propertySourcesPlaceholderConfigurer;

}

作为扩展值的解决方法..您可以尝试使用

@Value(${my.dir})
private String dir;

然后在你的 bean 配置中使用它:

propertySourcesPlaceholderConfigurer.setLocations(new ClassPathResource[]{
new ClassPathResource("config/"+dir+ "filename1" + ".properties"),
new ClassPathResource("config/"+dir+ "filename2" + ".properties")
});

关于java - Spring PropertySource 拒绝多次扩展变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23873804/

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