我们经常要使用@ConfigurationProperties来注入自定义配置,但是当配置规则复杂的情况下有时需要定义多个类来映射配置,此时就遇到一个问题,是将这些类单独定义还是以内部类的方式来定义。
我选择使用内部类,理由是:方便管理和维护。
在使用内部类的方式时遇到了一个问题,配置无法注入,于是在网上各种查找,结果无功而返。后来想起来Datasource的配置就是一个相对复杂的配置,于是去看它是怎么实现的,后来发现采用这种方式定义时需要将内部类定义为public static的。
@Data
@Component
@ConfigurationProperties(prefix = "data.collector")
public class CollectorConfiguration {
private Ignored ignored;
@Data
public static class Ignored {
private int maxSize;
private List<String> types = new ArrayList<>();
private Map<String,Table> tables = new HashMap<>();
@Data
public static class Table {
private List<String> types = new ArrayList<>();
private List<String> names = new ArrayList<>();
}
}
}

本文探讨了在Spring Boot中使用@ConfigurationProperties注解处理复杂配置时,如何通过内部类进行管理。作者分享了自己选择使用内部类的原因是便于管理和维护,但在实践过程中遇到了配置无法注入的问题。经过研究,发现在定义内部类时需要将其声明为public static,以此解决了问题。示例代码展示了如何定义和使用此类结构。
1229

被折叠的 条评论
为什么被折叠?



