问题标签 [spring-cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2620 浏览

java - java.lang.NegativeArraySizeException from Spring Cache

We are seeing this exception from a variety of sources. It's happening on a cache check from spring. In all cases, no annotation exists on the method (for caching). It happens intermittently, not readily reproducable. Seems embedded when it attempts to get the ClassUtils.getMostSpecificMethod:

Error Message:

Stack Trace:

0 投票
1 回答
1223 浏览

spring - Spring 强制 @Cacheable 使用 putifAbsent 而不是 put

我的 Spring 缓存实现如下

和 Java 配置文件

默认情况下,spring 使用缓存接口中的 put 方法来更新/放入缓存中的值。如何强制 spring 使用 putifabsent 方法被调用,这样如果缓存丢失或在其他情况下,我可以获得 null 值,第一次请求具有唯一用户名和密码的方法应该返回 null 并且随后请求该用户名和密码应该返回用户名。

0 投票
1 回答
1695 浏览

java - spring @Cacheable 继承

如何进行以下工作?

子类

以及这些对象的用户

然后某处

为什么这会失败

但是对于 getMyObjectConcrete 来说,同样的方法不会失败。

0 投票
1 回答
393 浏览

java - 为什么使用 AspectJ 的谷歌缓存很慢,而 SpringCaching 更快

我正在阅读有关缓存机制的内容,并使用带有 AspectJ 的 SpringCaching 创建了一个 EhCache 示例项目,并使用带有 AspectJ 的 SpringCaching 将其与谷歌缓存进行了基准测试。我的发现,让我有点吃惊。

注意:- 我的意思是 Spring Caching,方法使用 @Cacheable/@Caching 注释进行注释。

使用 AspectJ 的 SpringCaching 更胖,但另一方面,使用 AspectJ 的 google 缓存执行速度较慢。以下是他们处理请求的平均时间:-

由于我是新手,所以我也想确认一下,为什么要将 AspectJ 与 Spring Caching 一起使用,AspectJ 如何使缓存更快。

我也关注下面的帖子,但仍然不确定 AspectJ 是否真的提高了缓存性能。 http://architects.dzone.com/articles/cacheable-overhead-spring-0

0 投票
1 回答
2223 浏览

spring-boot - 在每个测试类中实例化不同的缓存管理器

在我的 Spring-Boot Web 应用程序项目中,我使用 Spring Cache 来实现缓存。缓存可以通过定义在application.yml. 我已经有现有的测试用例,假设没有缓存,则在其中编写测试。所以默认情况下,我的integration-test配置文件缓存被禁用,我初始化NoOpCacheManager并且我的所有测试工作。

我还想编写测试来验证缓存功能。我创建了一个CachedControllerTest类,其中编写了所有缓存特定的测试。

问题是当我跑步时

类中的所有测试CachedControllerTest都失败了,因为NoOpCacheManager即使我在 bean 函数中启用了缓存,缓存管理器也已初始化。

我尝试为它创建一个单独的配置文件CachedControllerTest,但它仍然失败,因为一旦cacheManager初始化 bean,它就不会被重置。

这是我的 CachedControllerTest 类

应用程序.yml

我的要求是为每个测试类重新初始化 cacheManage,而 CacheConfig 是我想在运行时修改的 bean,以便CacheManager可以初始化适当的。

如果我单独运行CachedControllerTest类测试,它们都会通过,因为在此之前没有其他测试类运行会将 cacheManager 初始化为 NoOpCacheManager。

提前感谢您提供任何帮助/建议以使这种情况发挥作用。

编辑 1

根据 Sam 的建议,添加了@ActiveProfiles.

编辑 2

AbstractRestControllerTest 类定义

0 投票
1 回答
2038 浏览

java - 当方法没有参数时使用@CacheResult

我有一个方法可以返回系统的(很少更改的)配置并想要缓存它。配置是根据不同的数据块构建的,所以我不想缓存单个块,而是SystemConfiguration对象本身。

该方法没有参数,我如何告诉 Ehcache 使用固定键“配置”(配置只有一个实例)?我必须创建一个CacheKeyGenerator还是有更简单的方法?

0 投票
2 回答
9412 浏览

java - 自定义 CacheResolver 不起作用

我有一个带有自定义的 Spring Boot 项目,CacheResolver因为我需要决定运行时要使用哪个缓存,我没有任何编译错误,但是,当我进行一些测试并在我的自定义设置断点时,CacheResolver它永远不会进入它。

这是我的缓存配置类:

这是我的 CacheResolver

这里是我使用缓存的 DAO:

我尝试过实施CacheResolver而不是扩展,AbstractCacheResolver但没有任何区别。

谢谢你。

0 投票
1 回答
2645 浏览

java - 使用 spring Cache 缓存属性

我正在尝试使用弹簧缓存为我的方法实现缓存。问题是在第一次之后这个方法没有被执行,这意味着属性没有被加载。如果我删除 @Cacheable 注释,它工作正常。我的要求是,只要添加新属性,该方法就应该运行并加载属性,否则它应该从缓存中返回。

XML 文件:

0 投票
1 回答
1604 浏览

spring - 具有缓存和泛型类型自动装配的 Spring 4

我正在使用最新版本的 Spring,当我尝试两次注入相同的泛型类型并且泛型类型的实现使用缓存时,我遇到了启动错误。

下面是我可以创建的最简单的示例来复制错误。

这编译得很好,但是当我运行应用程序时,我收到以下错误:

No qualifying bean of type [demo.GenericService] is defined: expected single matching bean but found 2: integerService,stringService

我还没有尝试过使用限定符,但我猜这将是一种解决方法。我会在发布后尝试一下。理想情况下,我希望自动装配泛型和缓存以集成开箱即用。我做错了什么,或者我能做些什么来让它工作吗?

谢谢!

0 投票
2 回答
11882 浏览

java - 使用 Spring Cache 抽象的异步缓存更新

使用 Spring 的缓存抽象,如何让缓存异步刷新条目,同时仍返回旧条目?

我正在尝试使用 Spring 的缓存抽象来创建一个缓存系统,在相对较短的“软”超时之后,缓存条目可以刷新。然后,当它们被查询时,返回缓存的值,并启动异步更新操作来刷新条目。我也会

Guava 的缓存构建器允许我指定缓存中的条目应在一定时间后刷新。然后可以用异步实现覆盖缓存加载器的 reload() 方法,允许返回陈旧的缓存值,直到检索到新的缓存值。但是,spring 缓存似乎不使用底层 Guava 缓存的 CacheLoader

是否可以使用 Spring 的缓存抽象来进行这种异步缓存刷新?

编辑澄清:使用 Guava 的 CacheBuilder,我可以使用 refreshAfterWrite() 来获得我想要的行为。例如来自Guava Caches Explained

但是,我看不到使用 Spring 的 @Cacheable 抽象来获取 refreshAfterWrite() 行为的方法。