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




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