记一次SpringBoot中@Cacheable不生效的解决
最近做项目遇到一个性能瓶颈,数据库两张表100多万数据级联查询,非常慢,特别是涉及到分页这块,自己用explain查看执行计划,由于条件很多,加索引优化也没生效,故使用缓存的方式解决,但有一个缓存一直不生效,自己看了一下源码打断点看执行方法,最终解决了,记录一下我的方法,希望对你有用(最后发现主要问题是我两个方法使用同一个map作为key,导致后面key覆盖了前面key所以一直取不到正确的数据)
首先找到spring-context的jar包,找到里面的CacheInterceptor类,找到里面的invoke初始化方法
可以看到这里最下面调用了excute方法执行,点进去,到CacheAspectSupport类中,这个时候看excute
直接点到return里面的execute方法,这个事初化主方法,基本查找和存取都在这个里面
@Nullable
private Object execute(final CacheOperationInvoker invoker, Method method, CacheOperationContexts contexts) {
// Special handling of synchronized invocation
if (contexts.isSynchronized()) {
CacheOpera