SpringBoot无法初始化地图属性的@configurationProperties

问题描述 投票:0回答:1
application.properties

,应该是

application.properties
Map<String, ServiceModel>

当我尝试使用它打印时

input.default.host=Default input.default.ip=127.0.0.1 input.default.desc=Default Desc input.serviceA.host=ServiceA input.serviceA.ip=192.168.21.1 input.serviceA.desc=ServiceA Desc input.serviceB.host=ServiceB input.serviceB.ip=192.168.21.22 input.serviceB.desc=ServiceB Desc
地图属性始终是
getServiceProperty(String key)

,就好像它们没有初始化一样。

在这里是类的细节-
null

@Component @ConfigurationProperties(prefix = "input") public class ServiceModelConfiguration { private Map<String, ServiceModel> properties; public Map<String, ServiceModel> getProperties() { return properties; } public void setProperties(Map<String, ServiceModel> properties) { this.properties = properties; } public ServiceModel getServiceProperty(String key) { ServiceModel specificProperty = properties.get(key); return specificProperty; } public static class ServiceModel { private String host; private String ip; private String desc; public ServiceModel(String host, String ip, String desc) { this.host = host; this.ip = ip; this.desc = desc; } // Getters // Setters } }

@Service public class PrintServices { private final ServiceModelConfiguration serviceModelConfiguration; @Autowired public PrintServices(ServiceModelConfiguration serviceModelConfiguration) { this.serviceModelConfiguration = serviceModelConfiguration; } public void printAllServiceProperties() { System.out.println("Host: " + serviceModelConfiguration.getServiceProperty("serviceA").getHost()); System.out.println("IP: " + serviceModelConfiguration.getServiceProperty("serviceA").getIp()); System.out.println("Desc: " + serviceModelConfiguration.getServiceProperty("serviceA").getDesc()); } }
    
这样保留这样的propperties。 
@SpringBootApplication
@EnableConfigurationProperties(ServiceModelConfiguration.class)
public class ConfigApplication implements CommandLineRunner {
  @Autowired private PrintServices printServices;

  public static void main(String[] args) {
    SpringApplication.run(ConfigApplication.class, args);
  }

  @Override
  public void run(String... args) throws Exception {
    printServices.printAllServiceProperties();
  }
}
地图仅在ServiceModelConfiguration中直接字段。
java spring spring-boot spring-mvc
1个回答
0
投票


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.