package com.sishuok.spring.cache;
import com.sishuok.spring.service.UserService;
import com.sishuok.spring.service.UserService2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.cache.interceptor.CacheOperationInvocationContext;
import org.springframework.cache.interceptor.CacheResolver;
import java.util.*;
/**
* User: zhangkaitao
* Date: 14-8-1
* Time: ����11:21
* Version: 1.0
*/
public class MyCacheResolver implements CacheResolver {
@Autowired
private CacheManager cacheManager;
@Override
public Collection<? extends Cache> resolveCaches(CacheOperationInvocationContext<?> context) {
List<Cache> caches = new ArrayList<Cache>();
for(String cacheName : context.getOperation().getCacheNames()) {
caches.add(cacheManager.getCache(cacheName));
}
if(context.getTarget() instanceof UserService2) {
caches.add(cacheManager.getCache("user2"));
caches.add(cacheManager.getCache("user3"));
}
return caches;
}
}