我有这样的问题:我的应用程序与一组其他应用程序一起工作。它们每个都有一些独特的属性 - templateProject-id。所以,application.properties
看起来像
mine.application.basic-project-id.application_1=10200
mine.application.basic-project-id.application_2=10202
mine.application.basic-project-id.application_3=10001
我不想将环境对象存储在我的服务类中。仅Map<String, Long>
对于对(application_name、project_id)
因此,从该示例应该包含对 ("application_1", 10200L), ("application_2",10202L), ("application_3",10001")
.
现在我存储Environment
并使用应用程序名称每次构建属性名称并检索值。
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 { .... }
然后在任何需要这些东西的地方,只需注入(inject) ApplicationProperties
即可。如果启用 Spring Boot configuration meta-data annotation processor to your build您还将获得该 key (以及您在该类(class)中添加的任何其他 key )的内容帮助。
关于java - 从 spring-boot 环境获取属性映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38226506/