From 512efa16871f55802421a1e3a90b8fdf2bb60add Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deleuze?= Date: Wed, 17 Feb 2021 11:08:40 +0100 Subject: [PATCH] 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 --- .../cache/CacheConfigurations.java | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheConfigurations.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheConfigurations.java index 529c68f92994..2cadf024f8a2 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheConfigurations.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheConfigurations.java @@ -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"); * you may not use this file except in compliance with the License. @@ -27,24 +27,25 @@ * * @author Phillip Webb * @author EddĂș MelĂ©ndez + * @author Sebastien Deleuze */ @SuppressWarnings("deprecation") final class CacheConfigurations { - private static final Map> MAPPINGS; + private static final Map MAPPINGS; static { - Map> mappings = new EnumMap<>(CacheType.class); - mappings.put(CacheType.GENERIC, GenericCacheConfiguration.class); - mappings.put(CacheType.EHCACHE, EhCacheCacheConfiguration.class); - mappings.put(CacheType.HAZELCAST, HazelcastCacheConfiguration.class); - mappings.put(CacheType.INFINISPAN, InfinispanCacheConfiguration.class); - mappings.put(CacheType.JCACHE, JCacheCacheConfiguration.class); - mappings.put(CacheType.COUCHBASE, CouchbaseCacheConfiguration.class); - mappings.put(CacheType.REDIS, RedisCacheConfiguration.class); - mappings.put(CacheType.CAFFEINE, CaffeineCacheConfiguration.class); - mappings.put(CacheType.SIMPLE, SimpleCacheConfiguration.class); - mappings.put(CacheType.NONE, NoOpCacheConfiguration.class); + Map mappings = new EnumMap<>(CacheType.class); + mappings.put(CacheType.GENERIC, GenericCacheConfiguration.class.getName()); + mappings.put(CacheType.EHCACHE, EhCacheCacheConfiguration.class.getName()); + mappings.put(CacheType.HAZELCAST, HazelcastCacheConfiguration.class.getName()); + mappings.put(CacheType.INFINISPAN, InfinispanCacheConfiguration.class.getName()); + mappings.put(CacheType.JCACHE, JCacheCacheConfiguration.class.getName()); + mappings.put(CacheType.COUCHBASE, CouchbaseCacheConfiguration.class.getName()); + mappings.put(CacheType.REDIS, RedisCacheConfiguration.class.getName()); + mappings.put(CacheType.CAFFEINE, CaffeineCacheConfiguration.class.getName()); + mappings.put(CacheType.SIMPLE, SimpleCacheConfiguration.class.getName()); + mappings.put(CacheType.NONE, NoOpCacheConfiguration.class.getName()); MAPPINGS = Collections.unmodifiableMap(mappings); } @@ -52,14 +53,14 @@ private CacheConfigurations() { } static String getConfigurationClass(CacheType cacheType) { - Class configurationClass = MAPPINGS.get(cacheType); - Assert.state(configurationClass != null, () -> "Unknown cache type " + cacheType); - return configurationClass.getName(); + String configurationClassName = MAPPINGS.get(cacheType); + Assert.state(configurationClassName != null, () -> "Unknown cache type " + cacheType); + return configurationClassName; } static CacheType getType(String configurationClassName) { - for (Map.Entry> entry : MAPPINGS.entrySet()) { - if (entry.getValue().getName().equals(configurationClassName)) { + for (Map.Entry entry : MAPPINGS.entrySet()) { + if (entry.getValue().equals(configurationClassName)) { return entry.getKey(); } }