В чем разница использования Spring Cache и хранения данных в переменной?

Пару дней назад я реализовал в проекте функцию кэширования во фреймворке Spring, и это было интересно, но теперь мне пришло в голову, что в чем разница между использованием Spring Cache и извлечением или инициализацией данных при запуске приложения и сохранением их в переменная в Spring bean-компоненте, к которой можно получить доступ через геттер?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
214
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Кэширование Spring - это более общий, гибкий и более сложный механизм, чем простой метод получения. Он позволяет использовать разных поставщиков кеша, настраивать недействительность кеша ... и многое другое.

Если для ваших нужд достаточно иметь только геттер - вы должны использовать геттер, чтобы ваше приложение было как можно более простым.

Ответ принят как подходящий

Если у вас есть один экземпляр приложения, вам не нужны более сложные функции (перечисленные ниже), и вы правильно синхронизируете доступ к переменной для многопоточного использования, разницы нет. Кэш - это кеш - вы временно сохранили значение, вычисление или выборка которого в противном случае требует больших затрат.

Однако Spring Cache предоставляет общий интерфейс для специализированных подсистем кэширования (например, EhCache, Redis ....). В EhCache вы можете настроить такие вещи, как:

  • Сколько элементов хранить в кеше (для ограничения использования памяти)
  • Он управляет истечением срока LRU, если он настроен (например, наименее недавно использованные элементы будут удалены из кеша после достижения определенных настроенных пороговых значений)
  • Вы можете выбрать, сохранять ли кеш на диск, или хранить его только в памяти, или и то, и другое.
  • Вы можете получить доступ к кешу из нескольких экземпляров приложения
  • Так далее....

Другие вопросы по теме

Как объединить две таблицы и использовать их как репозиторий jpa
Ожидается по крайней мере 1 bean-компонент, который квалифицируется как кандидат autowire для этой зависимости. Для зависимости не найдено подходящего bean-компонента типа
Интеграция Spring Boot + Hibernate (не Spring Data JPA) в Spring Boot 2.0 или выше
Ошибка при создании bean-компонента с именем 'ModelAccess' Не удалось ввести автоматически подключенные зависимости; Не удалось выполнить автоматическое подключение поля
Могу ли я поймать уже пойманное исключение?
Интеграция Spring с DSL: может ли адаптер исходящего канала File создать файл, скажем, через 10 минут интервала
Spring Boot - entityManagerFactory не может быть найден
Ошибка ведения журнала jboss при развертывании приложения Springboot на сервере jboss
HibernateJPaVendorAdapter: невозможно преобразовать значение типа String в требуемый тип 'org.springframework.orm.jpa.vendor.Database' ENitty
Образ докера запущен, но не может получить доступ к конечной точке отдыха в приложении весенней загрузки