Refactor CacheConfigurations to avoid storing configuration classes
This commit refactors CacheConfigurations implementation to make it more native friendly by storing strings instead of classes in order to avoid loading the configuration classes when CacheConfigurations is initialized at build time. See gh-25321
This commit is contained in:
parent
b5e1787641
commit
512efa1687
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2020 the original author or authors.
|
* Copyright 2012-2021 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -27,24 +27,25 @@ import org.springframework.util.Assert;
|
||||||
*
|
*
|
||||||
* @author Phillip Webb
|
* @author Phillip Webb
|
||||||
* @author Eddú Meléndez
|
* @author Eddú Meléndez
|
||||||
|
* @author Sebastien Deleuze
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
final class CacheConfigurations {
|
final class CacheConfigurations {
|
||||||
|
|
||||||
private static final Map<CacheType, Class<?>> MAPPINGS;
|
private static final Map<CacheType, String> MAPPINGS;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
Map<CacheType, Class<?>> mappings = new EnumMap<>(CacheType.class);
|
Map<CacheType, String> mappings = new EnumMap<>(CacheType.class);
|
||||||
mappings.put(CacheType.GENERIC, GenericCacheConfiguration.class);
|
mappings.put(CacheType.GENERIC, GenericCacheConfiguration.class.getName());
|
||||||
mappings.put(CacheType.EHCACHE, EhCacheCacheConfiguration.class);
|
mappings.put(CacheType.EHCACHE, EhCacheCacheConfiguration.class.getName());
|
||||||
mappings.put(CacheType.HAZELCAST, HazelcastCacheConfiguration.class);
|
mappings.put(CacheType.HAZELCAST, HazelcastCacheConfiguration.class.getName());
|
||||||
mappings.put(CacheType.INFINISPAN, InfinispanCacheConfiguration.class);
|
mappings.put(CacheType.INFINISPAN, InfinispanCacheConfiguration.class.getName());
|
||||||
mappings.put(CacheType.JCACHE, JCacheCacheConfiguration.class);
|
mappings.put(CacheType.JCACHE, JCacheCacheConfiguration.class.getName());
|
||||||
mappings.put(CacheType.COUCHBASE, CouchbaseCacheConfiguration.class);
|
mappings.put(CacheType.COUCHBASE, CouchbaseCacheConfiguration.class.getName());
|
||||||
mappings.put(CacheType.REDIS, RedisCacheConfiguration.class);
|
mappings.put(CacheType.REDIS, RedisCacheConfiguration.class.getName());
|
||||||
mappings.put(CacheType.CAFFEINE, CaffeineCacheConfiguration.class);
|
mappings.put(CacheType.CAFFEINE, CaffeineCacheConfiguration.class.getName());
|
||||||
mappings.put(CacheType.SIMPLE, SimpleCacheConfiguration.class);
|
mappings.put(CacheType.SIMPLE, SimpleCacheConfiguration.class.getName());
|
||||||
mappings.put(CacheType.NONE, NoOpCacheConfiguration.class);
|
mappings.put(CacheType.NONE, NoOpCacheConfiguration.class.getName());
|
||||||
MAPPINGS = Collections.unmodifiableMap(mappings);
|
MAPPINGS = Collections.unmodifiableMap(mappings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,14 +53,14 @@ final class CacheConfigurations {
|
||||||
}
|
}
|
||||||
|
|
||||||
static String getConfigurationClass(CacheType cacheType) {
|
static String getConfigurationClass(CacheType cacheType) {
|
||||||
Class<?> configurationClass = MAPPINGS.get(cacheType);
|
String configurationClassName = MAPPINGS.get(cacheType);
|
||||||
Assert.state(configurationClass != null, () -> "Unknown cache type " + cacheType);
|
Assert.state(configurationClassName != null, () -> "Unknown cache type " + cacheType);
|
||||||
return configurationClass.getName();
|
return configurationClassName;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CacheType getType(String configurationClassName) {
|
static CacheType getType(String configurationClassName) {
|
||||||
for (Map.Entry<CacheType, Class<?>> entry : MAPPINGS.entrySet()) {
|
for (Map.Entry<CacheType, String> entry : MAPPINGS.entrySet()) {
|
||||||
if (entry.getValue().getName().equals(configurationClassName)) {
|
if (entry.getValue().equals(configurationClassName)) {
|
||||||
return entry.getKey();
|
return entry.getKey();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue