Hacemos una verificación profunda cada reseñas de nuestra página web con el objetivo de enseñarte en todo momento información con la mayor veracidad y actualizada.
Solución:
El tipo de caché se detecta y configura automáticamente de forma predeterminada. Sin embargo, puede especificar qué tipo de caché usar agregando spring.cache.type
a su configuración. Para deshabilitarlo, establezca el valor en NONE
.
Como quieras hacerlo para un perfil específico, agrégalo a esos perfiles. application.properties
en este caso modificar el application-dev.properties
y añadir
spring.cache.type=NONE
Esto deshabilitará el almacenamiento en caché.
El comentario de David Newcomb dice la verdad:
spring.cache.type=NONE
no desactiva el almacenamiento en caché, evita que las cosas se almacenen en caché. es decir, todavía agrega 27 capas de AOP/pila de interceptor a su programa, es solo que no realiza el almacenamiento en caché. Depende de lo que quiera decir con “apagarlo todo”.
El uso de esta opción puede acelerar el inicio de la aplicación, pero también podría tener algunos gastos generales.
1) Para deshabilitar completamente la función Spring Cache
Mueve el @EnableCaching
class en una clase de configuración dedicada que envolveremos con un @Profile
para habilitarlo:
@Profile("!dev")
@EnableCaching
@Configuration
public class CachingConfiguration
Por supuesto, si ya tienes un Configuration
clase que está habilitada para todos menos el dev
entorno, solo reutilízalo:
@Profile("!dev")
//... any other annotation
@EnableCaching
@Configuration
public class NoDevConfiguration
2) Use un administrador de caché falso (noop)
En algunos casos, activar @EnableCaching
por perfil no es suficiente porque algunas de sus clases o algunas dependencias de Spring de su aplicación esperan recuperar del contenedor de Spring un bean que implementa el org.springframework.cache.CacheManager
interfaz.
En este caso, la forma correcta es usar una implementación falsa que permitirá que Spring resuelva todas las dependencias mientras la implementación del CacheManager
está libre de gastos generales.
Podríamos lograrlo jugando con @Bean
y @Profile
:
import org.springframework.cache.support.NoOpCacheManager;
@Configuration
public class CacheManagerConfiguration
@Bean
@Profile("!dev")
public CacheManager getRealCacheManager()
return new CaffeineCacheManager();
// or any other implementation
// return new EhCacheCacheManager();
@Bean
@Profile("dev")
public CacheManager getNoOpCacheManager()
return new NoOpCacheManager();
O si es más adecuado, puede agregar el spring.cache.type=NONE
propiedad que produce el mismo resultado que el escrito en la respuesta de M. Deinum.
Para su segunda pregunta, haga algo como esto:
Escriba un método que determine si un perfil en particular está activo o no (el entorno es su entorno inyectado)
boolean isProfileActive(String profile)
return Arrays.asList(environment.getActiveProfiles()).contains(profile);
luego utilícelo para su condición de hechizo en la anotación almacenable en caché
Eres capaz de añadir valor a nuestro contenido informacional aportando tu veteranía en las notas.