例如,MongoRepository
使用时,我希望将某些方法标记为@Cacheable
,例如insert(entity)
或findOne(id)
。
既然它是一个Spring存储库而不是我的存储库,我应该如何在这些方法上使用@Cacheable
?
答案 0 :(得分:7)
不确定您实际使用MongoRepository
的方式,您似乎建议您直接使用(在问题中包含您的代码通常是个好主意),但参考文档解释了使用此接口的基础知识(以及Spring Data中的所有存储库接口,事实上):"§ 6.1. Core concepts":
(...)此接口主要用作标记接口,用于捕获要使用的类型,并帮助您发现扩展此接口的接口。 (...)
您的自定义存储库类似于:
public interface SomeTypeMongoRepository extends MongoRepository<SomeType, Long> {
@Override
@CacheEvict("someCache")
<S extends SomeType> S insert(S entity);
@Override
@Cacheable("someCache")
SomeType findOne(Long id);
}
(请注意,它基于我在其中一条评论中包含的official example)
答案 1 :(得分:1)
其中一个选项可能是在xml中执行,如docs中所述。
这种方法的另一个好处是,您可以使用单个声明使多个方法可缓存。