Ответ 1
В документе Spring Doc упоминается следующее:
Так как кеши являются хранилищами ключевого значения, каждый вызов кэшированный метод должен быть переведен в подходящий ключ для кеша доступ. Исключительно, кэширующая абстракция использует простую KeyGenerator основан на следующем алгоритме:
-
Если параметры не заданы, верните 0
-
Если задан только один параметр, верните этот экземпляр
-
Если указано больше одного параметра, верните ключ, вычисленный из хэшей всех параметров.
http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/cache.html
Когда вы комментируете его с помощью @Cacheable(cacheNames = "objects")
, вы указываете ему имя кеша, с помощью которого он может идентифицировать кеш. Поскольку у вашего метода нет аргументов, для cacheName как "объектов" он будет кэшировать возвращаемый объект (List<Object>
в этом случае). и каждый раз, когда вызывается метод, он проверяет кеш с объектом cacheName и значением ключа как "0". Если у него уже есть объект возврата, который был кэширован в предыдущее время, он вернет объект.