问题标签 [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 投票
1 回答
987 浏览

caching - @CacheEvict 和 @TriggersRemove 注释之间的区别

我想在我的 portlet 应用程序中使用 Ehcache。如果我想从缓存中删除数据,最好使用@CacheEvictor @TriggersRemove

根据文档, @CacheEvict@TriggersRemove注释看起来非常相似。

0 投票
1 回答
12858 浏览

spring - 带有自定义 cacheResolver 的 spring 缓存

我想要动态缓存名称,而 spring 4.1 允许

从 Spring 4.1 开始,缓存注解的 value 属性不再是强制性的,因为无论注解的内容如何,​​CacheResolver 都可以提供此特定信息。

请注意我是如何偏执地设置cacheResolver所有可能的级别的:

Spring 4.1.5 仍然无法通过错误验证配置:Caused by: java.lang.IllegalStateException: No cache names could be detected on 'public abstract skunkworks.data.Gateway skunkworks.repos.GatewayRepository.findByBulkId(int)'. Make sure to set the value parameter on the annotation or declare a @CacheConfig at the class-level with the default cache name(s) to use. at org.springframework.cache.annotation.SpringCacheAnnotationParser.validateCacheOperation(SpringCacheAnnotationParser.java:240)

0 投票
7 回答
16414 浏览

spring-mvc - 如果 redis 连接失败,如何在运行时禁用 Redis 缓存

我们有 rest api 应用程序。我们使用 redis 进行 API 响应缓存和内部方法缓存。如果 redis 连接,那么它会使我们的 API 关闭。如果 redis 连接失败或出现任何异常,我们希望绕过 redis 缓存,而不是关闭我们的 API。有一个接口 CacheErrorHandler 但它处理 redis 获取设置操作失败而不是 redis 连接问题。我们使用的是 Spring 4.1.2。

0 投票
1 回答
2176 浏览

spring-cache - 从同一 bean 中自调用方法时无法识别的 Spring 缓存注释

亲爱的 Spring Cache 项目社区,

目前我正在使用合同第一种方法实现一个基于 Apache CXF 的 Spring(版本 4.1.5)Web 服务端点。在这里,我观察到在我的 Web 服务类中注释公共方法时,每次我在同一个 bean 中以自调用方式调用此方法时,都会忽略 Spring 缓存注释“@Cachable”。在查看底层缓存提供程序(此处为:EhCache)的缓存存储库(通过 JMX)时可以证明这一点。在那里,不会发生缓存填充。

在查看了 启用缓存注释调度程序 servlet下面的当前 Spring 文档后,我认为这可能是由于以下事实:

<cache:annotation-driven/>仅在定义它的同一应用程序上下文中的 bean 上查找 @Cacheable/@CachePut/@CacheEvict/@Caching。这意味着,如果您为 DispatcherServlet 放入 WebApplicationContext,它只会检查控制器中的 bean,并且不是你的服务。有关更多信息,请参阅第 17.2 节,“DispatcherServlet”。

目前,在“web.xml”部署描述符中注册的 Apache CXF“CXFServlet”默认使用“cxf-servlet.xml”Spring 应用程序上下文文件启动 Spring WebApplicationContext。在那里,<cache:annotation-driven/>位于。

或者可能是因为我从同一个 Spring bean 中调用 @Cacheable 注释方法,以便绕过生成的 Spring 代理?详细信息也可以在 Spring 文档的“代理机制”章节 (9.6) 中找到。

但我不知道如何更改行为以便缓存我的方法结果。你有什么想法?还是我在上面发布的假设不正确?

0 投票
1 回答
2359 浏览

spring - spring cache expire using bean property

Is there a way of indicating to expire/evict the cache object based on a property of the POJO cached.

In below code, it caches Foo instance. Foo class has a expiresIn property class Foo { Date expiresIn; }

I want to hint to spring to expire the cache based on the value of expiresIn property of cached element. Is this feasible?

My Cache.xml is below:

0 投票
1 回答
744 浏览

spring-mvc - ehcache 生成空数据文件

我想在我的 portlet 中使用带有 ehcache 的数据缓存。我使用 Spring MVC 和 liferay 门户。如果我想使用Cacheable注释,则会生成空数据文件。

SocialGraphUI-portlet.xml

ehcache.xml

SocialGraphViewController.java

我想缓存服务构造函数的结果,但不确定是否以正确的方式进行。

SocialGraphServiceImpl.java

这就是我要缓存的内容。

SocialGraph.java

当我部署 portlet 时,我没有收到任何错误,但生成的缓存文件是空的。

0 投票
0 回答
280 浏览

spring-cache - Spring @Cacheable @EntityGraph 不缓存子级

我有一个带有自定义方法的 JpaRepository 通过 ID 查找对象并使用实体图加载子项,例如

我想使用@Cacheable 缓存查询。问题是它不会缓存孩子。关于如何让 Spring 缓存孩子的任何建议?

0 投票
1 回答
1823 浏览

spring - 带有过滤器的 Spring @Cacheable

每个实体类都有 user.id 值,我在所有服务上都有过滤器,这些过滤器在数据库级别按 principal.id 和实体 user.id 过滤数据,只需添加 where 子句。我开始使用@Cacheable 弹簧选项。但过滤器不适用于 spring-cache。如何从缓存中过滤数据?

如果值在缓存中,则不同的用户可以访问其他用户的值。

0 投票
1 回答
484 浏览

java - 如何使列表线程安全以进行序列化?

我正在使用 ThreadSafeList 并且我从它获得了很大的里程数,用于将数据从进程流式传输到网络服务器,然后在数据进入客户端时将数据流式传输回来。在内存中,我使用 Spring Caching(引擎盖下的 ehcache)将数据保存在 JVM 中,一切都很好。当我开始达到堆限制并且 Spring Caching 在我使用它时开始将我的 ThreadSafeList 序列化到磁盘时,问题就开始了,导致 ConcurrentModificationExceptions。我可以覆盖序列化接口的私有 writeObject 和 readObject 方法来解决问题吗?我不确定如何执行此操作,或者我是否应该放弃我的 ThreadSafeList。

当我开始这个程序时,我使用的是 BlockingDeque,但这还不够,因为当我放入并采用结构时,我不记得要缓存的数据......我不能使用 ConcurrentMap 因为我需要订购在我的列表中...我应该选择 ConcurrentNavigableMap 吗?我觉得自己使用 ThreadSafeList 和自定义私有序列化函数可能是一种浪费?

Java 代码极客 ThreadSafeList

0 投票
1 回答
503 浏览

java - 是否可以在 Spring 3.1.x 版本中为缓存定义更多的 KeyGenerator 类?

我有一个配置类,它实现CachingConfigurer了定义具有特定密钥生成器的缓存管理器,但我应该为每个缓存使用不同的密钥生成器。

有一个选项形式Spring 4.1可以为每个操作指定一个密钥生成器:

我想知道是否有alternative这方面的Spring 3.1?