list
方法一:
business:
list: a,b,c,d,e,f
// 或者
business:
list: "a,b,c,d,e,f"
@Value("${business.list}")
List<String> list;
只要用逗号分隔就好,spring注入时会自动把他们拆分
方法二:
business:
list: "a,b,c,d,e,f"
@Value("#{'${business.list}'.split(',')}")
List<String> list;
方法三: 直接注入
@Value("#{'a,b,c,d'}")
List<String> list;
map
business:
map: "{key1: 'a,b,c,d,e,f',
key2: 'g,h,i,j,k,l'}"
@Configuration
@Data
public class RateConfig {
@Value("#{${business.map}}")
Map<String,List<String>> map;
}
测试代码
public static void main(String[] args) throws Exception {
ConfigurableApplicationContext run = SpringApplication.run(DemoApplication.class);
RateConfig bean = run.getBean(RateConfig.class);
}
结果:
分析:
如果直接使用以下代码(没有#{})进行注入,会报错。
@Value("${business.map}")
Map<String,List<String>> map;
原因尚不清楚,估计是convertor啥的不支持。
而使用示例中的注入,其实相当于
// 示例中的
@Value("#{${business.map}}")
Map<String,List<String>> map;
// 等价于
@Value("#{{key1: 'a,b,c,d,e,f', key2: 'g,h,i,j,k,l'}}")
Map<String,List<String>> map;