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
https://blog.yjll.blog/post/a336f015.html