gpt4 book ai didi

java - @Cacheable 条件使用应用程序属性

转载 作者:行者123 更新时间:2023-11-30 08:42:50 30 4
gpt4 key购买 nike

我正在尝试将 Redis 与 Spring 的 @Cacheable 一起使用,但需要根据 Spring Boot 样式的应用程序属性有条件地打开或关闭缓存。我的第一次尝试似乎没有用。

application.properties 文件:

auth.token-cache-enabled=false

属性类:

@Component
@ConfigurationProperties(prefix = "auth")
public class AuthProperties {
public boolean tokenCacheEnabled;
...
}

服务方法注解:

@Cacheable(key = "#token", condition = "@authProperties.tokenCacheEnabled()")

结果:

org.springframework.expression.spel.SpelEvaluationException: EL1057E:(pos 1): No bean resolver registered in the context to resolve access to bean 'authProperties' at org.springframework.expression.spel.ast.BeanReference.getValueInternal(BeanReference.java:48)

有没有人知道问题出在哪里,或者是否有其他方法可以解决这个问题?

最佳答案

我找到了一种在我的情况下进行这项工作的方法,但我也找到了我认为是同一问题的错误票:https://jira.spring.io/browse/SPR-13812

我的解决方法是将 @Inject 我的 AuthProperties 到包含我要缓存的方法的服务中。接下来,我将方法的缓存条件更改为:

    @Cacheable(key = "#token", condition = "#root.target.authProperties.tokenCacheEnabled")

关于java - @Cacheable 条件使用应用程序属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34442811/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com