java - 从 spring-boot 环境获取属性映射

标签 java spring spring-boot

我有这样的问题:我的应用程序与一组其他应用程序一起工作。它们每个都有一些独特的属性 - 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/

相关文章:

java - 警告 : java. lang.IndexOutOfBoundsException

java - Spring - <上下文 :property-placeholder> load multiple properties but ignore missing ones

具有多个 JVM 的多个实例的 App 中的 Spring Scheduler 代码

java - Spring Tool Suite 启动错误 - Java 已启动但返回退出代码 =13

java - Spring Boot - JpaRepository 在使用多个数据源时未初始化

java - Spring Boot : Configuring Spring DataSource for Tests

spring-boot - Spring Boot中连接池的配置方法

java - 更改 Android 中缓存文件的外观

java - Spring MVC JSON 使用错误

java - 如何最好地迭代二维数组的对角线