当前位置: 首页 > 知识库问答 >
问题:

Spring 4@具有属性表达式的可缓存除非表达式

毋宏茂
2023-03-14

是否可以在@cacheable注释的除非表达式中使用spring属性占位符?我希望缓存一个服务方法,除非返回的结果小于@PropertySource(“classpath:application.properties”)中指定的属性minCacheCalc的值。

@Service
class CalculationService {
    // @Cacheable(cacheNames="calculations", unless="#result < 10") // works fine hardcoded
    @Cacheable(cacheNames="calculations", unless="#result < ${minCacheCalc}")
    public Integer calculate(Integer i) {
        System.out.println("calculate(" + i + ")");
        return i * i - i;
    }

}
SpelParseException: EL1041E: After parsing a valid expression, there is still more data in the expression: 'lcurly({)'

共有1个答案

唐弘益
2023-03-14

我觉得看起来应该更像:

#{result lt minCacheCalc}

我用这个作为参考。

 类似资料:
  • 接下来我们来看看属性表达式。在之前的例子中,属性表达式只涉及到被管理的实体类的直接属性,在创建查询时我们已经确保解析出的属性是被管理实体类的属性之一。实际上,我们可以定义嵌套属性。假设Person类有一个Address,Address中又有ZipCode。在这种情况下,下面方法的方法名会通过x.address.zipCode来检索属性。 List<Person> findByAddressZipC

  • 在我的Spring Boot应用程序(基于JHipster 4)中,我试图使用属性表达式根据Spring文档中描述的相关实体的属性来过滤我的查询:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-方法。查询属性表达式 我想得到所有的约会,在他们的约会计划中有一个特定的雇员帐户

  • 我有一个具有多个可选和非捕获组的正则表达式。所有这些组都可能发生,但不必发生。正则表达式应使用非捕获组返回整个字符串。 当我将最后一个组也设置为可选时,正则表达式将具有多个分组结果。当我将第一组设置为非可选时,正则表达式匹配。为什么? 输入将类似于,预期输出。 提前感谢!

  • 我有一个Person对象列表,如下所示: 结果列表中必须没有同名的人,无论年龄如何,因此只有3个元素可以存活。如何使用Java8 lambda表达式来实现这一点呢?

  • 鉴于 和 如何在Orika中映射以下内容? 我需要定制的映射器或过滤器吗?

  • 我正在对科特林进行修补,我正试图让我的头脑了解科特林中可为空的变量是如何工作的。这里我有一段代码,它执行布尔检查,以查看车辆是否超载。实现是处理可空变量的好方法还是有更优雅的方法? 非常谢谢!