CacheConfig.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package com.ylcm.sys.config;
  2. import java.lang.reflect.Method;
  3. import java.util.LinkedHashMap;
  4. import java.util.Map;
  5. import org.springframework.cache.annotation.EnableCaching;
  6. import org.springframework.cache.ehcache.EhCacheCacheManager;
  7. import org.springframework.cache.interceptor.KeyGenerator;
  8. import org.springframework.context.annotation.Bean;
  9. import org.springframework.context.annotation.Configuration;
  10. import org.springframework.util.DigestUtils;
  11. import com.alibaba.fastjson.JSONObject;
  12. @Configuration
  13. @EnableCaching
  14. public class CacheConfig {
  15. @Bean("cacheManager")
  16. public EhCacheCacheManager EhcacheManager() {
  17. EhCacheCacheManager ehCacheManager = new EhCacheCacheManager();
  18. return ehCacheManager;
  19. }
  20. @Bean
  21. public KeyGenerator cacheKeyGenerator(){
  22. CacheKeyGenerator cacheKeyGenerator = new CacheKeyGenerator();
  23. return cacheKeyGenerator;
  24. }
  25. public class CacheKeyGenerator implements KeyGenerator {
  26. @Override
  27. public Object generate(Object target, Method method, Object... params) {
  28. Map<String, Object> map = new LinkedHashMap<>();
  29. if (params != null && params.length > 0) {
  30. int i = 0;
  31. for (Object o : params) {
  32. map.put("params-" + i, o);
  33. i++;
  34. }
  35. }
  36. String str = JSONObject.toJSON(map).toString();
  37. return method.getName() + "-" + DigestUtils.md5DigestAsHex(str.getBytes());
  38. }
  39. }
  40. }