You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从properties文件配置值中提取List<List<String>>类型数据?

解决方案

共有3种可行的实现方式,可根据项目场景选择:

方案1:直接扩展SpEL表达式(最快实现)

在原有@Value的SpEL表达式基础上,使用SpEL集合投影语法对每个外层分割后的元素做二次拆分即可,示例代码如下:

// 注意如果需要去除元素前后空格、括号等特殊字符,可在split后追加trim、replace逻辑
@Value("#{'${case.value}'.split(';')}.![T(java.util.Arrays).stream(#this.split(',')).map(String::trim).toList()]")
private List<List<String>> caseValue;

语法说明:![...]是SpEL的集合投影操作符,会遍历外层split得到的每一个字符串元素,对其执行[...]内的拆分逻辑。

方案2:使用@ConfigurationProperties+自定义Converter(最规范,适合配置较多的场景)

如果是Spring Boot项目,推荐用配置绑定的方式实现,可复用性更高:

  1. 首先注册自定义类型转换器:
@Component
public class StringToListListConverter implements Converter<String, List<List<String>>> {
    @Override
    public List<List<String>> convert(String source) {
        return Arrays.stream(source.split(";"))
                .map(item -> Arrays.stream(item.split(","))
                        .map(String::trim)
                        // 如需去除配置中的括号,打开下一行注释即可
                        // .map(s -> s.replaceAll("[()]", ""))
                        .toList())
                .toList();
    }
}
  1. 定义配置类:
@ConfigurationProperties(prefix = "case")
public class CaseProperties {
    private List<List<String>> value;
    // 省略getter、setter
}
  1. 在启动类上开启配置绑定:
@SpringBootApplication
@EnableConfigurationProperties(CaseProperties.class)
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

后续直接注入CaseProperties即可拿到解析后的嵌套列表。

方案3:手动解析(最灵活,适合有复杂自定义规则的场景)

如果拆分逻辑有特殊要求,可先注入原始配置字符串,在Bean初始化阶段手动解析:

@Value("${case.value}")
private String caseValueStr;

private List<List<String>> caseValue;

@PostConstruct
public void parseCaseValue() {
    caseValue = Arrays.stream(caseValueStr.split(";"))
            .map(item -> Arrays.stream(item.split(","))
                    .map(String::trim)
                    // 可自定义任意处理逻辑,比如括号过滤、空值过滤等
                    .filter(s -> !s.isBlank())
                    .toList())
            .toList();
}

内容的提问来源于stack exchange,提问作者murari99732

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:24:04