我在使用不同的泛型类型时遇到了同样的问题,我通过初始化map成员并删除了setter方法来解决了这个问题,例如:
@Component@EnableConfigurationProperties@ConfigurationProperties(prefix = "countries")public class UserLimitReader{ private Map<String, Integer> orders = new HashMap<>(); private Map<String, Integer> requests = new HashMap<>(); public Map<String, Integer> getOrders() { return orders; } ...}请注意,我使用了Java 7 Diamond运算符,并将成员类型更改为Map而不是HashMap。
重要信息:
在我的代码中,我使用Spring的配置类而不是XML,并将其
EnableConfigurationProperties移至配置类。您的情况应该是这样的:
@Configuration@EnableConfigurationProperties(value = {UserLimitReader.class})public class SpringConfiguration { ...}@ConfigurationProperties(prefix = "countries", locations: "classpath:config/application.yaml")public class UserLimitReader { ...}不知道如何使用XML对其进行配置,但是正如我在评论中所写的那样,我仍然认为您应该确保Spring使用组件扫描或类似方法找到您的类。
@Value可以像Spring一样使用上下文文件加载YAML文件而没有问题,但这并不意味着
UserLimitReader文件是由Spring加载和配置的。



