鉴于我有一些可缓存的方法,是否可以通过更改application.properties文件中的属性来实时启用/禁用其用法? 例如:
我的application.properties文件具有:UseBookCache=true
@Cacheable(cacheNames="books", condition = "${UseBookCache}")
public Book getByIsbn(String isbn){
//Return book
}
我想通过设置UseBookCache=false
来禁用运行时缓存
我不想禁用所有缓存,仅禁用此特定实例。这是满足我需求的最佳方法吗?
答案 0 :(得分:-1)
我不建议在运行时禁用这种功能,因为很难跟踪发生的情况(除非您记录配置和结果),并且会极大地改变应用程序的行为。
注释的attrubute的值在运行时无法更改,需要重新启动应用程序。
还请注意,如果缓存中有给定参数的条目,则该方法将不会被调用并且将无法记录任何内容。
此注释可以读取参数值来决定是否使用缓存。 This other SO answer可能会有所帮助:
一个解决方法可以使您的方法有条件 根据参数缓存。缓存注释支持 通过使用SpEL的condition参数来实现功能 计算为true或false的表达式。
@Cacheable(cacheNames="book", condition="#cached == false") public Book findBook(boolean cached)
如文档中所述。 https://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html