【问题标题】:set value to Cacheable annotation from property file从属性文件将值设置为可缓存注释
【发布时间】:2018-01-16 12:23:03
【问题描述】:

我正在使用 Spring Cacheable 注释,目前我正在努力寻找一种从属性文件中添加缓存名称的方法。

我试过了:

@Cacheable("${some.cache.name}")

@Cacheable("#{'${some.cache.name}'}")

【问题讨论】:

  • 您遇到了什么样的错误/问题?
  • 从文档中我认为 value/cacheNames 属性中不支持 SpEL @Cacheable 注释因为(与 key 属性不同)没有任何关于 SpEL 的说明value/cacheNames。描述为什么要从属性文件中读取缓存名称。也许还有另一种方法可以实现您想要的。
  • 我只想将缓存名称保留在属性文件中。我找不到注入它的方法。
  • 这个可以理解。但是为什么?通常缓存的名称应该是不需要配置的。
  • 只需在代码中的某处定义一个常量 public static final String CACHE_NAME = "myCache" 并引用该常量,而不是从配置中读取它。

标签: java spring spring-cache


【解决方案1】:

有一个 SPI 可以做到这一点,它比仅使用 SpEL 更强大。您可以实现CacheResolver 并在运行时解析缓存实例。您可以使用带注释的类型或通过注释提供的任何名称。

您可以为每个注解指定CacheResolver,在类级别使用@CacheConfig 或通过实现CacheConfigurer 全局指定。

查看the documentation for more details

【讨论】:

    猜你喜欢
    • 2018-07-20
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    相关资源
    最近更新 更多