gpt4 book ai didi

java - @PropertySource 中的 File.separator

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

我想在 @PropertySource 注释的路径中包含“/”或“\”,以便它可以在 Linux 或 Windows 下运行。

我已经尝试过

@PropertySource("${dir} + #{T(File).separator} + "${name}")

以及许多变体,但没有运气。

如何在 @PropertySource 中包含独立于平台的文件路径分隔符?

最佳答案

你是对的,这个问题如何适用于很多人(即开发 Windows 环境与生产 Unix 环境等),这很奇怪。

一个自然的答案是,您只需将正确的尾部“斜杠”放在实际 dir 的末尾即可。属性的格式与操作系统特定的文件路径类型相同。否则...

这是一个解决方案,假设您得到 ${dir}在操作系统环境中 native 文件系统格式和 name文件路径,你可以这样做:

@PropertySource(name = "theFileInDir.properties",value = { "file:${dir}" }, factory = OSAgnosticPropertySourceFactory.class) 

然后,您将创建一个 PropertySourceFactory对于 @PropertySource#factory 注释元素如下所示:

public class OSAgnosticPropertySourceFactory implements PropertySourceFactory {

@Override
public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
Path resolvedFilePath = Paths.get(resource.getResource().getURI()).resolve(name);
EncodedResource er = new EncodedResource(new PathResource(resolvedFilePath), resource.getCharset());
return (name != null ? new ResourcePropertySource(name, er) : new ResourcePropertySource(er));
}

}

我喜欢我的解决方案,因为您可以利用 name 中的基本元素(例如 valuefactory@PropertySource 元素)。注释本身可以使用 Java 7 解析与操作系统无关的文件位置 Path .

您可以使用 PropertySourceFactory 做更多事情,但我认为这对你来说应该足够了。我很想看到有关此问题的其他答案;我自己也遇到过这个问题,所以我很高兴你让我思考解决这个问题的方法!

关于java - @PropertySource 中的 File.separator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50223158/

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