Skip to content
This repository was archived by the owner on Nov 21, 2020. It is now read-only.

Commit 1160fce

Browse files
committed
feat: add cache manager utility method
1 parent dc7b169 commit 1160fce

File tree

2 files changed

+33
-5
lines changed

2 files changed

+33
-5
lines changed

src/main/java/org/code4everything/boot/cache/CacheCreator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
* @author pantao
99
* @since 2019/6/13
1010
**/
11+
@FunctionalInterface
1112
public interface CacheCreator {
1213

1314
/**

src/main/java/org/code4everything/boot/cache/CacheUtils.java

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@
22

33
import cn.hutool.core.collection.CollUtil;
44
import com.google.common.cache.CacheBuilder;
5-
import org.code4everything.boot.cache.guava.GuavaCacheCreator;
5+
import org.code4everything.boot.cache.guava.GuavaCache;
66
import org.code4everything.boot.cache.guava.GuavaCacheManager;
77
import org.springframework.cache.Cache;
88

99
import java.util.ArrayList;
1010
import java.util.Arrays;
1111
import java.util.Collection;
12+
import java.util.Map;
1213

1314
/**
1415
* Spring Cache工具类
@@ -20,21 +21,47 @@ public class CacheUtils {
2021

2122
private CacheUtils() {}
2223

24+
// ---------------------------------------Guava---------------------------------------------------------------------
25+
26+
public static GuavaCacheManager newGuavaCacheManager(Map<String, CacheBuilder<Object, Object>> cacheBuilderMap) {
27+
return newGuavaCacheManager(cacheBuilderMap, null);
28+
}
29+
30+
31+
public static GuavaCacheManager newGuavaCacheManager(Map<String, CacheBuilder<Object, Object>> cacheBuilderMap,
32+
CacheBuilder<Object, Object> defaultCacheBuilder) {
33+
Collection<Cache> caches = new ArrayList<>();
34+
cacheBuilderMap.forEach((k, v) -> caches.add(new GuavaCache(k, v.build())));
35+
return new GuavaCacheManager(caches, defaultCacheBuilder);
36+
}
37+
2338
public static GuavaCacheManager newGuavaCacheManager(CacheBuilder<Object, Object> cacheBuilder, String... names) {
2439
return newGuavaCacheManager(cacheBuilder, Arrays.asList(names));
2540
}
2641

2742
public static GuavaCacheManager newGuavaCacheManager(CacheBuilder<Object, Object> cacheBuilder,
2843
Collection<String> names) {
29-
CacheCreator cacheCreator = new GuavaCacheCreator(cacheBuilder);
3044
if (CollUtil.isEmpty(names)) {
31-
return new GuavaCacheManager(cacheCreator);
45+
return new GuavaCacheManager(cacheBuilder);
3246
}
3347
Collection<Cache> caches = new ArrayList<>(names.size());
3448
for (String name : names) {
35-
caches.add(cacheCreator.createCache(name));
49+
caches.add(new GuavaCache(name, cacheBuilder.build()));
3650
}
37-
return new GuavaCacheManager(caches, cacheCreator);
51+
return new GuavaCacheManager(caches, cacheBuilder);
52+
}
53+
54+
// --------------------------------------------Custom---------------------------------------------------------------
55+
56+
public static GuavaCacheManager newCacheManager(Map<String, CacheCreator> cacheCreatorMap) {
57+
return newCacheManager(cacheCreatorMap, null);
58+
}
59+
60+
public static GuavaCacheManager newCacheManager(Map<String, CacheCreator> cacheCreatorMap,
61+
CacheCreator defaultCacheCreator) {
62+
Collection<Cache> caches = new ArrayList<>();
63+
cacheCreatorMap.forEach((k, v) -> caches.add(v.createCache(k)));
64+
return new GuavaCacheManager(caches, defaultCacheCreator);
3865
}
3966

4067
public static BootCacheManager newCacheManager(CacheCreator cacheCreator, String... names) {

0 commit comments

Comments
 (0)