У меня есть метод, который извлекает все данные, и я кэширую результат этого метода, но я не могу удалить результат.
@Component("cacheKeyGenerator")
public class CacheKeyGenerator implements KeyGenerator {
@Override
public Object generate(Object target, Method method, Object... params) {
final List<Object> key = new ArrayList<>();
key.add(method.getDeclaringClass().getName());
return key;
}
}
Кэшированный метод: -
@Override
@Cacheable(value="appCache",keyGenerator="cacheKeyGenerator")
public List<Contact> showAllContacts() {
return contactRepository.findAll();
}
@Override
@CachePut(value="appCache",key="#result.id")
public Contact addData(Contact contact) {
return contactRepository.save(contact);
}
Теперь, когда когда-либо вызывается addData, я хочу, чтобы данные в кеше «appCache» с ключом ="cacheKeyGenerator" были удалены. Чтобы данные, возвращаемые методом «showAllContacts()», были точными. Кто-нибудь может помочь!
Весь код можно найти по адресу - https://github.com/iftekharkhan09/SpringCaching.
@CacheEvict
для удаления кэшированной записи? Это то, что вы ищете? - person Barath   schedule 15.10.2017add(...)
, потому что вы явно вызываете пустой (но аннотированный) методevictCache()
? - person fateddy   schedule 15.10.2017