如何从application.yml获取设置地图?

问题描述

这是我的 application.yml 配置:

spring:
  cache:
    cache-names: all_config_bundle,all_config_dependence,config_plan
    caffeine.spec: maximumSize=100,expireAfteraccess=0s
    caches:
      all_config_bundle: maximumSize=100,expireAfteraccess=0s
      all_config_dependence: maximumSize=100,expireAfteraccess=0s
      config_plan: maximumSize=100,expireAfteraccess=0s

我需要将它们分组,这就是我添加另一部分设置的原因。这是我的配置类:

@Configuration
@EnableConfigurationProperties(CacheProperties.class)
@Setter
public class CacheConfig {

    private Map<String,String> caches;
}

CacheProperties 已经有一个 "spring.cache" 前缀,所以我只添加了我的组的名称。 我的地图中仍然显示“空”。我的错误是什么?

解决方法

使用 @ConfigurationPropertiesprefix 对我有用

@ConfigurationProperties(prefix = "spring.cache")
@Data
@Configuration
public class CacheConfig {

     private Map<String,String> caches;
}

输出:

{all_config_bundle=maximumSize=100,expireAfterAccess=0s,all_config_dependence=maximumSize=100,config_plan=maximumSize=100,expireAfterAccess=0s}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...