Java 从spring启动环境获取属性映射

Java 从spring启动环境获取属性映射,java,spring,spring-boot,Java,Spring,Spring Boot,我有这样一个问题:我的应用程序与一组其他应用程序一起工作。它们每个都有一些唯一的属性-templateProject-id mine.application.basic-project-id.application_1=10200 mine.application.basic-project-id.application_2=10202 mine.application.basic-project-id.application_3=10001 我不想在我的服务类中存储环境对象。仅适用于pair

我有这样一个问题:我的应用程序与一组其他应用程序一起工作。它们每个都有一些唯一的属性-templateProject-id

mine.application.basic-project-id.application_1=10200
mine.application.basic-project-id.application_2=10202
mine.application.basic-project-id.application_3=10001
我不想在我的服务类中存储环境对象。仅适用于pairs应用程序\u名称、项目\u id的映射 因此,从该示例中,应包含成对的应用程序_1、10200L、应用程序_210202L、应用程序_310001

现在我存储环境,每次使用应用程序名构建属性名并检索值

String projectIdPropertyName = String.format("mine.application.basic-project-id.%s", applicationDescriptor.getName());
String softwareBasicProjectId = Long.valueOf(environment.getProperty(projectIdPropertyName));
这应该行得通

@ConfigurationProperties("mine.application")
public class ApplicationProperties {

   private Map<String,Long> basicProjectId = new HashMap<>();

   public Map<String,Long> getBasicProjectId() { 
     return basicProjectId;
   }
}


@SpringBootApplication
@EnableConfigurationProperties(ApplicationProperties.class)
public class YourApp { .... }

然后在任何需要这些东西的地方,只需注入ApplicationProperties。如果您启用了,您还将获得该键以及您将添加到该类中的任何其他键的内容帮助。

basicProjectId不是总是空的吗?在我的服务中提问之前,我尝试了相同的逻辑,但Map最终还是空的。我试过你的答案,它是有效的。MagicWell我没有尝试就用SO写了这段代码,所以我很高兴它能做到。您需要将此代码与您的代码进行比较,以了解出了什么问题。