Интеграция кофеина и пружинной загрузки
Кофеин - это переписанная версия кэша гуавы с использованием Java 8, которая заменит гуаву в Spring Boot 2.0. Если появится кофеин, Caffeinecachemanager будет автоматически настроен. Используйте свойство spring.cache.cache-name, чтобы создать кэши при запуске и можно настроить (по порядку) со следующей конфигурацией:
Например, следующая конфигурация создает кэш Foo и Bar с максимальным числом 500 и временем выживания 10 минут:
spring.cache.cache-names = foo, barspring.cache.caffeine.spec = maximumsize = 500, истекающий экземпляр = 600 с
Кроме того, если Com.github.benmanes.caffeine.cache.cacheloader будет определен, он будет автоматически связан с Caffeinecachemanager. Поскольку CacheloAder будет связывать все кэши, управляемые Cache Manager, он должен быть определен как CacheloAder <объект, объект>, а автоматическая конфигурация будет игнорировать все общие типы.
Ввести зависимости
<depervice> <groupid> org.springframework.boot </GroupId> <ArtifactId> Spring-Boot-Starter-cache </artifactid> </depervice> <dehydency> <groupid> com.github.ben-manes.caffeine </GroupD> <strifactid> caffeine </artifactid> <serse> 2.6.0 </artifactid> </artifactid> <serse> 2.6.0 </artifactid> </artifactid> <sers> 2.6.0 </artifactid> </artifactid> <serse> 2.6.
Включить поддержку кеша
Используйте аннотацию @enablecaching, чтобы включить поддержку кэша
@SpringBootApplication@enableCaching // Включить кэш, указанный открытый открытый класс SpringBootStudentCacheCaffeIneApplicalation {public static void main (string [] args) {SpringApplication.run (SpringbootStudentCacheCaffeineApplication.class, args); }}Файл конфигурации
Добавлены специальные конфигурации для кеша, такие как максимальная емкость, время истечения срока действия и т. Д.
spring.cache.cache-names = peoplespring.cache.caffeine.spec = initialCapacity = 50, максимальное значение = 500, истекающая плата
Если используется конфигурация RefreshafterWrite, также необходимо указать CacheloAderer, например:
/** * Этот боб должен быть указан, и свойство конфигурации RefreshafterWrite = 5s вступит в силу * * @return */ @beanpublic cacheloader <объект, объект> cacheloader () {cacheloader <объект, объект> cacheloader = new Cacheloader <Object, Object> () { @@Override public object object juld (ObjectAl -Key exception) phrows neclect) phrows neclection) phrows necle -necement) phrows). } // Перепишите этот метод и возвращайте значение OldValue обратно, а затем обновите кэш @Override public объекта Reload (ключ объекта, объект OldValue), бросает исключение {return oldValue; }}; вернуть CacheloAder;}Инструкции по конфигурации кофеина:
Уведомление:
Пример кода
/** * @author yuhao.wang */ @servicepublic class personserviceimpl реализует personservice {private static final logger logger = loggerfactory.getlogger (personserviceimpl.class); @Autowired PersonRepository PersonRepository; @Override @cacheput (value = "people", key = "#person.id") public save (человек) {person p = personrepository.save (человек); logger.info ("is id, key:" + p.getid () + "cached data"); возврат P; } @Override @cacheevict (value = "people") // 2 public void remove (long id) {logger.info ("удалить кэш данных с помощью идентификатора, ключ" + id + ""); // Фактическая операция удаления здесь не выполняется} /** * Cachable * Значение: кэшируйте префикс ключа. * КЛЮЧ: Кэш -ключ суффикс. * Sync: Установите, если кэш истекает, необходимо ли разместить только один запрос для запроса базы данных, а другие запросы заблокированы, а по умолчанию неверно. */ @Override @cachable (value = "people", key = "#person.id", sync = true) public findone (человек, строка a, string [] b, list <long> c) {person p = personrepository.findone (person.getid ()); logger.info ("для id, ключ:" + p.getid () + "данные кэшируются"); возврат P; } @Override @Cachable (value = "people1") // 3 Общественный человек findOne1 () {person p = personRepository.findone (2L); logger.info ("для id, ключ:" + p.getid () + "Данные кэшируются»); возврат P; } @Override @Cachable (value = "people2") // 3 Общественный человек findOne2 (человек) {Person p = personRepository.findone (person.getid ()); logger.info ("для id, ключ:" + p.getid () + "Данные кэшируются»); возврат P; }} Исходный код: https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.