Java 如何在Spring@Value字段中注入映射?

Java 如何在Spring@Value字段中注入映射?,java,spring,Java,Spring,如何将以下application.properties注入映射字段 下面的课程有什么问题 @Service @ConfigurationProperties("my") public class MyService { private Map<String, String> server; public void setServer(Map<String, String> server) { this.server = server; } p

如何将以下application.properties注入映射字段

下面的课程有什么问题

@Service
@ConfigurationProperties("my")
public class MyService {
     private Map<String, String> server;
     public void setServer(Map<String, String> server) { this.server = server; }

    public MyService(WebClient.Builder builder) {
          this.builder = builder.uri(server.get("url")).build();
    }
}
结果:

通过构造函数实例化Bean失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:未能 实例化[MyService]:构造函数抛出异常;嵌套异常 是java.lang.NullPointerException


在configuration类中创建一个bean,如下所示:

@Bean(name = "appProperties")
public static PropertiesFactoryBean mapper() {
PropertiesFactoryBean bean = new PropertiesFactoryBean();
bean.setLocation(new ClassPathResource("application.properties"));
return bean;
}

然后将其中的值作为映射注入到所需的类中,如下所示:

@Resource(name = "appProperties")
private Map<String, String> properties;

希望这有帮助。不,仍然得到相同的异常。不确定这是否可能。查看Spring代码,例如org.springframework.boot.autoconfigure.kafka.KafkaProperties使用生成器方法将注入的列表和单个字符串字段转换为映射。糟糕的是,问题在于构造函数中的属性尚未注入,因此NPE。@membersound,映射的属性注入应该可以工作。您发布的异常与您的代码无关,因为您在构造函数中获得NPE,并且在代码中NPE在此构造函数中是不可能的。
@Resource(name = "appProperties")
private Map<String, String> properties;