如何暂时禁用Spring缓存的缓存

2024-03-02

我有一个 spring bean 注释为@Cacheable像这样定义的注释

@Service
public class MyCacheableBeanImpl implements MyCacheableBean {
    @Override
    @Cacheable(value = "cachedData")
    public List<Data> getData() { ... }
}

我需要此类能够禁用缓存并仅使用原始来源的数据。这应该基于外部的某些事件而发生。这是我的方法:

@Service
public class MyCacheableBeanImpl implements MyCacheableBean, ApplicationListener<CacheSwitchEvent> {
    //Field with public getter to use it in Cacheable condition expression
    private boolean cacheEnabled = true;

    @Override
    @Cacheable(value = "cachedData", condition = "#root.target.cacheEnabled") //exression to check whether we want to use cache or not
    public List<Data> getData() { ... }

    @Override
    public void onApplicationEvent(CacheSwitchEvent event) {
        // Updating field from application event. Very schematically just to give you the idea
        this.cacheEnabled = event.isCacheEnabled();
    }

    public boolean isCacheEnabled() {
        return cacheEnabled;
    }

}

我担心的是这种方法的“魔力”程度非常高。我什至不确定如何测试这是否有效(根据 spring 文档,这应该有效,但如何确定)。我做对了吗?如果我错了那么如何纠正?


我正在寻找的是 NoOpCacheManager:

为了使它工作,我从 xml bean 创建切换到工厂

我做了如下事情:

    @Bean
public CacheManager cacheManager() {
    final CacheManager cacheManager;        
    if (this.methodCacheManager != null) {
        final EhCacheCacheManager ehCacheCacheManager = new EhCacheCacheManager();
        ehCacheCacheManager.setCacheManager(this.methodCacheManager);
        cacheManager = ehCacheCacheManager;
    } else {
        cacheManager = new NoOpCacheManager();
    }

    return cacheManager;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何暂时禁用Spring缓存的缓存 的相关文章

  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • GWT - 如何组织项目以拥有多个网页以及它们之间的导航

    我是 GET 的新手 顺便说一句 它给我留下了深刻的印象 并且发现它对于像我这样熟悉 C NET 桌面技术并愿意编写 Web 应用程序的人来说非常有吸引力 我根据 GWT Eclipse 向导生成的示例启动了自己的项目 该项目生成带有面板的
  • 在 Wildfly 中与 war 部署共享 util jar 文件

    假设我有一个名为 util jar 的 jar 文件 该 jar 文件主要包含 JPA 实体和一些 util 类 无 EJB 如何使这个 jar 可用于 Wildfly 中部署的所有 war 无需将 jar 放置在 war 的 WEB IN
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 是否可以使用 Flying Saucer (XHTML-Renderer) 将 css 解析为类路径资源?

    我正在尝试将资源打包到 jar 中 但我无法让 Flying Saucer 在类路径上找到 css 我无法轻松构建 URL 来无缝解决此问题 https stackoverflow com questions 861500 url to l
  • Kotlin 未解决的参考:CLI 上 gradle 的 println

    放一个printlnkotlin 函数返回之前的语句会崩溃 堆栈跟踪 thufir dur NetBeansProjects kotlin thufir dur NetBeansProjects kotlin gradle clean bu
  • ConcurrentHashMap 内部是如何工作的?

    我正在阅读有关 Java 并发性的 Oracle 官方文档 我想知道Collection由返回 public static
  • Freemarker 和 Struts 2,有时它计算为序列+扩展哈希

    首先我要说的是 使用 Struts2 Freemarker 真是太棒了 然而有些事情让我发疯 因为我不明白为什么会发生这种情况 我在这里问是因为也许其他人有一个想法可以分享 我有一个动作 有一个属性 说 private String myT
  • 使用架构注册表对 avro 消息进行 Spring 云合约测试

    我正在查看 spring 文档和 spring github 我可以看到一些非常基本的内容examples https github com spring cloud samples spring cloud contract sample
  • 流中的非终结符 forEach() ?

    有时 在处理 Java Stream 时 我发现自己需要一个非终端 forEach 来触发副作用但不终止处理 我怀疑我可以用 map item gt f item 之类的方法来做到这一点 其中方法 f 执行副作用并将项目返回到流中 但这似乎
  • HashMap 值需要不可变吗?

    我知道 HashMap 中的键需要是不可变的 或者至少确保它们的哈希码 hashCode 不会改变或与另一个具有不同状态的对象发生冲突 但是 HashMap中存储的值是否需要与上面相同 为什么或者为什么不 这个想法是能够改变值 例如在其上调
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • 使用按钮作为列表的渲染器

    我想使用一个更复杂的渲染器 其中包含列表的多个组件 更准确地说 类似于this https stackoverflow com questions 10840498 java swing 1 6 textinput like firefox
  • OpenCSV:将嵌套 Bean 映射到 CSV 文件

    我正在尝试将 bean 映射到 CSV 文件 但问题是我的 bean 具有其他嵌套 bean 作为属性 所发生的情况是 OpenCSV 遍历属性找到一个 bean 然后进入其中并映射该 bean 内的所有数据 如果找到另一个 bean 它就
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例
  • Java中HashMap和ArrayList的区别?

    在爪哇 ArrayList and HashMap被用作集合 但我不明白我们应该在哪些情况下使用ArrayList以及使用时间HashMap 他们两者之间的主要区别是什么 您具体询问的是 ArrayList 和 HashMap 但我认为要完
  • 如何使用play框架上传多个文件?

    我在用play framework 2 1 2 使用java我正在创建视图来上传多个文件 我的代码在这里 form action routes upload up enctype gt multipart form data
  • 配置“DataSource”以使用 SSL/TLS 加密连接到 Digital Ocean 上的托管 Postgres 服务器

    我正在尝试托管数据库服务 https www digitalocean com products managed databases on 数字海洋网 https en wikipedia org wiki DigitalOcean 创建了

随机推荐

  • 将类名添加到 uibinder xml 文件中的元素

    以下内容替换任何当前的 css 类名称 看来是叫setStyleName
  • 如何使用 xquery update 将节点内的文本转换为子节点?

    我有一个 xml 文档 例如
  • 检查模拟对象的类类型

    我正在测试一个方法 该方法获取一个对象并检查该对象是否是存储为实例变量的类的实例 到目前为止没有问题 但在测试中我必须使用模拟 并且这些模拟之一是传递给该方法的对象 而现在 事情变得棘手了 我们看一下代码 我总结了本次测试的代码 Class
  • 如何在VBA中的公式中插入变量

    有人能解决这个问题吗 Sub test Dim i as integer For I 1 to 10 ActiveCell Offset 0 2 Formula Sum E15 i Next I End Sub 你的实际目标不清楚 你可能想
  • 编辑字典列表中的值?

    my dicts key1 value1 key2 value2 key1 value1 key2 value2 key1 value1 key2 value2 将 value2 的所有实例替换为 value3 的最有效方法是什么 我没有做
  • TDE 启用对数据库性能有何影响?

    如果我在数据库上使用透明数据加密 会对数据库性能产生任何影响吗 这会导致数据库索引出现问题吗 有些人已经对此进行了测试 参见here http www databasejournal com features mssql article p
  • 跨行对 Pandas 数据框进行分组

    我有一个这样的csv client1 client2 client3 client4 client5 client6 amount Comp1 4 475000 Comp2 16 305584 Comp3 4 050000 Comp2 Co
  • Android 上的电子邮件活动

    我想从 Android 虚拟机发送电子邮件到我的 Gmail 帐户 问题 但是按下发送按钮后我得到 没有应用程序可以执行此操作 这是我的代码 Intent sendIntent new Intent Intent ACTION SEND s
  • GWT 中自动登录的会话和 Cookie

    我知道已经有很多问题了 但我似乎仍然没有找到明确的答案 我想要做的是让用户在登录两周后或直到他们注销之前被记住 以下是我认为应该发生的事情 我想知道是否有更多经验的人可以告诉我我是对还是错 用户首次登录 对服务器的 RPC 调用返回一个 U
  • 如何发布c# windows应用程序安装程序

    我正在尝试发布 C Windows 应用程序 我尝试安装 Shield 和 Visual Studio 安装程序 但它无法正常工作 此安装程序只能安装在安装了 Visual Studio 的笔记本电脑或 PC 上 谁能帮助我需要什么先决条件
  • 使用 gridsearchcv 的内存泄漏

    Problem 我的情况似乎是运行 gridsearchcv 时出现内存泄漏 当我运行 1 或 32 个并发工作线程 n jobs 1 时 会发生这种情况 以前我在 ubuntu 16 04 上运行过多次 没有出现任何问题 但最近升级到 1
  • 当资源无法调用其他步骤并重试抛出异常的同一步骤时,如何处理 FlatFileItemReader 异常?

    我正在使用 Spring Batch 远程分区 我的第一步为所有其他步骤准备输入文件 其他步骤处理输入文件 要在所有 4 台服务器上创建输入文件 我的第一步应该在所有服务器上运行 因此 我在所有服务器上设置了消费者并发数 1 网格大小 4
  • 从 UICollectionViewCell 呈现 UIPopoverController

    我希望通过 UICollectionViewCell 上的按钮呈现 UIPopoverController 到目前为止 一切都创建正常 但弹出窗口不可见 有什么特殊的方法可以做到这一点吗 如果我从集合视图单元格以外的任何其他位置显示该代码
  • 推荐一些类似于 Bresenham 的二维球面映射算法?

    我需要最快的球体映射算法 就像布雷森纳姆的线条画一样 类似于我在 Star Control 2 旋转行星 中看到的实现 是否有任何已经发明和 或实施的技术 我真的不想重新发明自行车 请帮忙 问题描述 我在 2D 表面上有一个必须出现球体的位
  • “setup”命名空间中没有定义命令:Magento 2

    我已经安装了latest version of Megento 2 前端 后端和功能一切正常 我有一个问题bin magento setup upgrade命令 当我在终端中运行此命令时 我得到以下异常 无效参数异常 setup 命名空间中
  • 使用 UIKitForMac 时“令牌不是预处理器子表达式中的有效二元运算符”

    所以我正在尝试为 mac 编译我的 iOS 项目 当我尝试使用 if targetEnvironment UIKitForMac 我从标题中得到了错误 我尝试将构建目标设置为 iOS 13 但似乎没有任何效果 Objective C if
  • 元素内的“u”属性

    由于我无法搜索到有意义的结果 因此我无法确定这不是重复的 但是 我在网站上运行 JSSOR 滑块 并且某些元素具有 u 属性 例如 div style width 100 height 500px 当我通过 W3 验证器运行此 u slid
  • 是否有 R 函数用于查找向量中元素的索引?

    在 R 中 我有一个元素x和一个向量v 我想找到一个元素的第一个索引v等于x 我知道做到这一点的一种方法是 which x v 1 但这似乎效率太低了 有没有更直接的方法来做到这一点 对于奖励积分 是否有一个功能可以在以下情况下工作 x是一
  • Angular2 在 ngSwitch 新视图创建后调用自定义函数

    我正在使用创建一个小应用程序Angular2 Ionic2 在这个应用程序中我想初始化google map into view segment当用户切换到map segment using ion segment 以下是示例代码结构
  • 如何暂时禁用Spring缓存的缓存

    我有一个 spring bean 注释为 Cacheable像这样定义的注释 Service public class MyCacheableBeanImpl implements MyCacheableBean Override Cach