Spring-将单个文件中的多个属性合并到List <string>中

时间:2018-11-28 14:51:27

标签: java spring

是否可以将多个配置属性合并到一个字符串列表中?

让我们说我要配置受支持的扩展,例如:

application.extension.pdf=pdf
application.extension.txt=txt
application.extension.docx=docx

在运行时,它的加载方式如下:

List<String> extensions = {"pdf","txt","docx"}

然后我可以检查列表是否包含某些扩展名。 集合也可以工作。

2 个答案:

答案 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

这在需要键和值的映射上下文中可能有用。

(请注意更新的属性路径)