Комментарий Дэвида Ньюкомба говорит правду:
spring.cache.type=NONE
не отключает кеширование, оно предотвращает кеширование вещей. то есть он по-прежнему добавляет в вашу программу 27 слоев стека АОП/перехватчика, просто он не выполняет кэширование. Это зависит от того, что он подразумевает под «выключить все это».
Использование этого параметра может ускорить запуск приложения, но также может иметь некоторые накладные расходы.
1) Чтобы полностью отключить функцию Spring Cache
Переместите класс @EnableCaching
в выделенный класс конфигурации, который мы обернем @Profile
, чтобы включить его:
@Profile("!dev")
@EnableCaching
@Configuration
public class CachingConfiguration {}
Конечно, если у вас уже есть класс Configuration
, который включен для всех, кроме среды dev
, просто используйте его повторно:
@Profile("!dev")
//... any other annotation
@EnableCaching
@Configuration
public class NoDevConfiguration {}
2) Используйте фальшивый (noop) менеджер кеша
В некоторых случаях активации @EnableCaching
по профилю недостаточно, поскольку некоторые из ваших классов или некоторые зависимости Spring вашего приложения ожидают извлечения из контейнера Spring bean-компонента, реализующего интерфейс org.springframework.cache.CacheManager
.
В этом случае правильным способом является использование поддельная реализация, которая позволит Spring разрешать все зависимости, в то время как реализация CacheManager
не требует накладных расходов.
Мы могли бы добиться этого, играя с @Bean
и @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();
}
}
Или, если это больше подходит, вы можете добавить свойство spring.cache.type=NONE
, которое дает тот же результат, что и в ответе М. Дейнума.
person
davidxxx
schedule
05.07.2019
spring.cache.type=NONE
к вашемуapplication-dev.properties
. - person M. Deinum   schedule 10.03.2016spring.cache.type=NONE
не отключает кеширование, оно предотвращает кеширование вещей. то есть он по-прежнему добавляет в вашу программу 27 слоев стека АОП/перехватчика, просто он не выполняет кэширование. Это зависит от того, что он имеет в виду под выключением всего этого. - person David Newcomb   schedule 29.06.2017