Spring使用@Value注入List和Map

yml常规写法

需要添加spring-boot-configuration-processor模块,并且对要注入的对象添加set方法

List

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
interceptorconfig:
  path:
    exclude:
      - /source
      - /sep/user/login
      - /sep/user/getCheckCode/
@Component
@Data
@ConfigurationProperties(prefix = "interceptorconfig.path")
public class TokenFilter {

    private  List<String> exclude;

}

Map

generate:
  companyAndPlanMap:
    101: 2018081601
    121: 2018081602
    111: 2018081603
@RestController
@RequestMapping("/c")
@Slf4j
@ConfigurationProperties("generate")
public class C35Controller {

    private Map<String, String> companyAndPlanMap;

    public void setCompanyAndPlanMap(Map<String, String> companyAndPlanMap) {
        this.companyAndPlanMap = companyAndPlanMap;
    }
}    

EL表达式+JSON写法

scio.cloud.list: topic1,topic2,topic3
scio.cloud.maps: "{key1: 'value1', key2: 'value2'}"
@Value("#{'${scio.cloud.list}'.split(',')}")
private List<String> list;
 
@Value("#{${scio.cloud.maps}}")  
private Map<String,String> maps;

参考文档

Spring @Value 注入List和Map

Spring Boot配置文件注入


Spring使用@Value注入List和Map
https://blog.yjll.blog/post/a336f015.html
作者
简斋
发布于
2020年10月26日
许可协议