是否可以将多个配置属性合并到一个字符串列表中?
让我们说我要配置受支持的扩展,例如:
application.extension.pdf=pdf
application.extension.txt=txt
application.extension.docx=docx
在运行时,它的加载方式如下:
List<String> extensions = {"pdf","txt","docx"}
然后我可以检查列表是否包含某些扩展名。 集合也可以工作。
答案 0 :(得分:0)
假设您选择的文件夹中有一个名为 supported_extensions.props 的文件,其中包含您发布的内容。然后,您可以读取文件的行,用"="
分割它们,并使用结果数组的最后一部分,即扩展名本身。尝试以下代码行:
public static void main(String[] args) {
String filePathString = "Y:\\our\\folder\\supported_extensions.props";
Path filePath = Paths.get(filePathString);
List<String> extensionProperties = new ArrayList<>();
try {
extensionProperties = Files.readAllLines(filePath);
} catch (IOException e) {
e.printStackTrace();
}
List<String> extensions = new ArrayList<>();
extensionProperties.forEach(extensionProperty -> {
String extension = extensionProperty.split("=")[1];
extensions.add(extension);
});
extensions.forEach(extension -> {
System.out.println(extension);
});
}
您必须包括以下导入内容才能使其起作用:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
考虑问题下方评论中给出的提示,这些提示并不重要!
答案 1 :(得分:0)
您可以使用一个为您完成加载并使用属性填充地图的Bean。
PropertyFile:
@Component
@ConfigurationProperties("application.extensions")
public class ExtensionMapper {
private Map<String, String> map = new LinkedHashMap<>();
}
Bean:
setMonth
这在需要键和值的映射上下文中可能有用。
(请注意更新的属性路径)