my.property.cache.enabled=false
这不是关于启用/禁用缓存的运行时。
例如,此代码:
@Configuration
@EnableCaching
class ReportCacheConfiguration {
@Bean
CacheManagerCustomizer<CaffeineCacheManager> cacheManagerCustomizer(MeterRegistry registry) {
return cacheManager -> cacheManager.registerCustomCache("report", reportCache());
}
private Cache<Object, Object> reportCache() {
return Caffeine.newBuilder()
.expireAfterWrite(1, TimeUnit.MINUTES)
.build()
;
}
}
@Service
public class BookServiceImpl implements BookService {
@Cacheable(cacheNames = "report")
public Book findBook(String isbn) {
//some very expensive network call
//then some very expensive database call
return new Book(...);
}
}
在上面的代码中,尤其是当第三方网络调用或数据库超载时,缓存非常有用。
,无论如何,在某些时刻,第三方服务或数据库正在加载下,在这种情况下,我们实际上要“击中目标并做昂贵的事情”。
为此,我们目前要评论代码,创建新的构建并重新部署...@Service
public class BookServiceImpl implements BookService {
//@Cacheable(cacheNames = "report")
public Book findBook(String isbn) {
//some very expensive network call
//then some very expensive database call
return new Book(...);
}
}
//@Configuration
//@EnableCaching
//class ReportCacheConfiguration {
//
// @Bean
// CacheManagerCustomizer<CaffeineCacheManager> cacheManagerCustomizer(MeterRegistry registry) {
// return cacheManager -> cacheManager.registerCustomCache("report", reportCache());
// }
//
// private Cache<Object, Object> reportCache() {
// return Caffeine.newBuilder()
// .expireAfterWrite(1, TimeUnit.MINUTES)
// .build()
// ;
// }
//
//}
我认为这有点“愚蠢”。有可能,有一些春季配置,类似
springboot.cache.enabled=true
您可以在配置类上使用
@ConditionalOnProperty
注释
@Configuration
@EnableCaching
@ConditionalOnProperty("my.property.cache.enabled")
class ReportCacheConfiguration {
...
}