Я заметил несколько строк @CacheEvict("Settings") в каком-то исходном коде, и мне было любопытно, делает ли он то же самое, что и CacheEvict(value = "Settings", allEntries = true)?




Просто взгляните на его Javadoc.
Вы заметите, что значение по умолчанию для allEntries равно false. Так что нет, это нет одно и то же.
Используйте allEntries = true только в том случае, если вам нужен свежий кеш каждый раз при выполнении операции.
Whether all the entries inside the cache(s) are removed. By default, only the value under the associated key is removed.
Если вы хотите увидеть детали реализации, просто посмотрите на Кофеин.
Когда @CacheEvict указан без атрибута key, все параметры метода используются для создания ключа для вытесняемой записи, поэтому
@CacheEvict("Settings")
public String doThing(String foo, Integer bar) {
// ...
}
... удалит запись с составным ключом {foo, bar}. Генератор ключей по умолчанию, используемый для создания составного ключа, — это SimpleKeyGenerator, который возвращает экземпляры SimpleKey, которые содержат ссылки на параметры метода для сравнения.
Если метод не имеет параметров, ключ по умолчанию — SimpleKey.EMPTY.
Атрибут allEntries не может быть установлен на true, если вы укажете атрибут key; они взаимоисключающие. Если установлено значение true, все записи в кеше будут удаляться каждый раз при вызове аннотированного метода.
Так...
@CacheEvict("Settings", allEntries = true)
public String doThing(String foo, Integer bar) {
// ...
}
... будет очищать кеш Settings каждый раз при вызове метода, независимо от параметров метода.