springboot中使用@ConfigurationProperties复杂对象类型映射

一般我们使用@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);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容