我正在使用 spring-data-jpa 1.9.0.RELEASE 并想在我的存储库中使用 spring 缓存机制,例如
public interface LandDao extends CrudRepository<Land, Long> {
@Cacheable("laender")
Land findByName(String land)
}
这是我的缓存配置:
@Configuration
@EnableCaching(mode=AdviceMode.ASPECTJ)
public class EhCacheConfiguration extends CachingConfigurerSupport {
...
请注意,我使用的是 AdviceMode.ASPECTJ(编译时编织)。不幸的是,调用 repo 方法“findByName”时缓存不起作用。将缓存模式更改为 AdviceMode.PROXY 一切正常。
为了确保缓存原则上适用于 aspectJ,我编写了以下服务:
@Service
public class LandService {
@Autowired
LandDao landDao;
@Cacheable("landCache")
public Land getLand(String bez) {
return landDao.findByName(bez);
}
}
在这种情况下,缓存就像一个魅力。所以我认为我的应用程序的所有部分都已正确配置,问题在于 spring-data-jpa 和 AspectJ 缓存模式的组合。有谁知道这里出了什么问题?