You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

项目内跨类访问Guava Cache的可行性问题

Guava Cache跨类访问的问题

能不能从项目内任意类访问Guava Cache,核心取决于你缓存实例的访问权限,和Guava Cache本身没有关系。

针对你提到的场景分析

你在FetchBanner.java中创建了名为bannelUrl的缓存,其他类能否访问它的值,分以下几种情况:

  • 如果bannelUrl是private私有变量:只有FetchBanner类自身能访问,其他类根本看不到这个缓存实例,自然无法读取里面的值。
  • 如果是默认权限(无修饰符):仅和FetchBanner处于同一包下的类可以访问。
  • 如果是protected修饰符:同包类以及FetchBanner的子类能够访问。
  • 如果是public修饰符:项目内所有类都能直接获取该缓存实例,进而读取其中的值。

更合理的实践方式

直接将缓存实例设为public虽然能实现跨类访问,但违背了封装原则,容易导致缓存被误修改或滥用。更推荐的做法:

  • 在FetchBanner类中提供公共的访问方法,比如getBannerUrl(String key)、saveBannerUrl(String key, String url),对外仅暴露必要的读写操作,还能在方法内添加权限校验、日志记录等逻辑。
  • 若使用Spring等框架,可通过依赖注入将缓存实例注入到需要访问的类中,通过控制反转的方式管理缓存访问,既保证封装性,又能灵活共享缓存。

内容的提问来源于stack exchange,提问作者Jithesh Nair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:42:08