Binder.bind()
我仍然不认为这里(和其他地方)需要完全主导。除了其他任何事情之外,调试/阅读/理解真的很难。我们是否可以将“反射”、“宽松的属性名称”和“类型转换”问题进一步分开,以便可以更强制地编写它?
例如
Collection<String> imports = StringUtils.commaDelimitedListToSet(Something.getRelaxedProperty(environment, "spring.config.import", ""));
属性名称约定可以封装在Environment
事件中。然后,您可以完成这一切,而无需读取任何注释元数据,也无需反射性地调用任何方法:
Collection<String> imports = StringUtils.commaDelimitedListToSet(environment, "spring.config.import", "");
String[] profiles = StringUtils.commaDelimitedListToStringArray(environment, "spring.config.activate.on-profile", "");
CloudPlatform platform = CloudPlatform.valueOf(environment, "spring.config.activate.on-cloud-platform", "NONE").toUpperCase());
ConfigDataProperties data = new ConfigDataProperties(imports, new Activate(platform, profiles));
ConfigDataProperties
只有 3 个输入(因此它是一个合理的值对象),并且它们都是原始的(从 String 进行简单的类型转换)。