一般我们使用@ConfigurationProperties可以将配置映射到spring的bean中,如:
@Configuration
@ConfigurationProperties("test")
@Data
public class Config {
private String stra;
private Map<Long, List<MyBean>> config;
}
public static class MyBean {
private BigDecimal a;
private Integer b;
private String c;
}
像stra可以直接在配置文件中按照以下写法:
test.stra=xxx
但是像config这种复杂类型,如果直接这样写:
test.config.1=[{"a":1,"b":2,"c":"123"},{"a":2,"b":2,"c":"123"}]
启动时就会出现
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to bind properties under 'test.config.1' to java.util.List<MyBean>:
此时我们自定义一个配置转换器
@ConfigurationPropertiesBinding
@Component
public class ContractViewConfigConverter implements Converter<String, List<MyBean>> {
@Override
public List<MyBean> convert(String s) {
return JSONArray.parseArray(s, MyBean.class);
}
}