我使用spring-data-jpa 1.9.0.RELEASE並希望在我的存儲庫中使用彈簧緩存機制,例如,春季緩存抽象(AdviceMode.ASPECTJ)不工作在spring-data-jpa存儲庫內
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緩存模式的結合。有沒有人知道這裏有什麼問題?
不幸的是,如果您希望在保存實體時逐出緩存,則我的解決方案無法工作,請參閱@ oliver-gierke的[this](http://stackoverflow.com/a/26283080/5396465)發佈。這是因爲我們無法使用CacheEvict註釋註釋CrudRepository接口的方法
S save(S實體)。我想這個問題不能輕易解決... – smitzkus