Integración de cafeína y botas de primavera
Caffeine es una versión reescrita de la caché de guayaba usando Java 8, que reemplazará a Guava en Spring Boot 2.0. Si aparece cafeína, CaffeInecachemanager se configurará automáticamente. Use la propiedad Spring.cache.cache-Names para crear cachés al inicio y se puede personalizar (en orden) con la siguiente configuración:
Por ejemplo, la siguiente configuración crea un caché Foo y una barra con un número máximo de 500 y un tiempo de supervivencia de 10 minutos:
spring.cache.cache-names = foo, barspring.cache.caffeine.spec = maximumSize = 500, expirante enterrains = 600s
Además, si se define com.github.benmanes.caffeine.cache.cacholacheroader, se asociará automáticamente con el CaffeInecachemanager. Dado que el CachelOader asociará todos los cachés administrados por el Cache Manager, debe definirse como CachelOader <Object, Object>, y la configuración automática ignorará todos los tipos genéricos.
Introducir dependencias
<Spendency> <ProupId> org.springframework.boot </groupid> <artifactID> spring-boot-starter-cache </arfactid> </pendency> <paperency> <uproupid> com.github.ben-manes.caffeine </groupid> <shifactid> caffeine </artifactid> <versions> 2.6.0 </versión </groupid> <tifactid> caffeine </artifactid> <versions> 2.6.0 </versión> </artifactiD> caffeine </artifactid> <versions> 2.6.0 </Versión> </artificial>
Habilitar soporte de caché
Use la anotación @enablecaching para habilitar el soporte de caché
@Springbootapplication@enableCaching // Enable Cache, la clase pública especificada SpringBootStudentCacheCaffeineApplication {public static void main (string [] args) {springapplication.run (springBootStudentCacheCaffeApplication.class, args); }}Archivo de configuración
Se agregaron configuraciones especiales para caché, como capacidad máxima, tiempo de vencimiento, etc.
spring.cache.cache-names = PeopleSpring.cache.caffeine.spec = inicialCapacity = 50, maximumSize = 500, expirantewterwrite = 10s, refreshafterwrite = 5s
Si se utiliza la configuración de RefreshAfterWrite, también se debe especificar un comandante, como:
/** * Este bean debe especificarse, y la propiedad de configuración de RefreshAfterWrite = 5s entrará en vigencia * * @return */ @beanpublic cacleAaDer <object, object> cacheLoader () {Cachacheader <Object, Object> Cachelacher = New CacheTretoader <Object, Object> () { @ @@Override Object Load (Object) Shows Exception —Coméstico {retorno NEW CACLAADER <Object, Object, Object> () { @ @ @@Override Object Load (Object) Shows Exception —Exters {RETULTA } // Reescribe este método y devuelve el valor OldValue hacia atrás, y luego actualice el caché @Override Public Object Reload (Key de objeto, Object OldValue) arroja excepción {return OldValue; }}; devolver Cachacoader;}Instrucciones de configuración de cafeína:
Aviso:
Código de muestra
/** * @author yuhao.wang */ @ServicePublic de la clase PersonserviceImpl implementa Personservice {private static final logger logger = loggerFactory.getLogger (PersonserviceImpl.class); @AutoWired PersonRepository PersonRepository; @Override @Cacheput (value = "People", Key = "#Person.id") Persona pública salvar (persona persona) {persona p = personaRepository.save (persona); logger.info ("es id, clave:" + p.getID () + "Data caché"); regreso p; } @Override @CacheEvict (value = "People") // 2 public void Remove (Long ID) {logger.info ("eliminar el caché de datos con id, clave" + id + ""); // La operación de eliminación real no se realiza aquí} /** * Cacheable * Valor: caché el prefijo de la clave. * Clave: Cache Key Sufix. * SINC: Establecer si el caché expira, es necesario solo colocar una solicitud para solicitar la base de datos, y otras solicitudes están bloqueadas, y el valor predeterminado es falso. */ @Override @Cachable (value = "People", Key = "#Person.id", Sync = True) Public Person Findone (Persona Persona, String A, String [] B, List <Long> C) {Person P = PersonRepository.Findone (Person.getID ()); logger.info ("para id, clave:" + p.getid () + "Los datos se almacenan en caché"); regreso p; } @Override @Cachable (value = "People1") // 3 Persona pública Findone1 () {Person P = PersonRepository.Findone (2L); logger.info ("para ID, la clave es:" + p.getID () + "Los datos se almacenan en caché"); regreso p; } @Override @Cachable (valor = "People2") // 3 Persona pública Findone2 (Persona Persona) {Person P = PersonRepository.Findone (Person.getID ()); logger.info ("para ID, la clave es:" + p.getID () + "Los datos se almacenan en caché"); regreso p; }} Código fuente: https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.