|
1 | 1 | /*
|
2 |
| - * Copyright 2002-2023 the original author or authors. |
| 2 | + * Copyright 2002-2025 the original author or authors. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
@@ -101,7 +101,7 @@ public class SpringFactoriesLoader {
|
101 | 101 |
|
102 | 102 | private static final Log logger = LogFactory.getLog(SpringFactoriesLoader.class);
|
103 | 103 |
|
104 |
| - static final Map<ClassLoader, Map<String, SpringFactoriesLoader>> cache = new ConcurrentReferenceHashMap<>(); |
| 104 | + static final Map<ClassLoader, Map<String, Factories>> cache = new ConcurrentReferenceHashMap<>(); |
105 | 105 |
|
106 | 106 |
|
107 | 107 | @Nullable
|
@@ -327,10 +327,11 @@ public static SpringFactoriesLoader forResourceLocation(String resourceLocation,
|
327 | 327 | Assert.hasText(resourceLocation, "'resourceLocation' must not be empty");
|
328 | 328 | ClassLoader resourceClassLoader = (classLoader != null ? classLoader :
|
329 | 329 | SpringFactoriesLoader.class.getClassLoader());
|
330 |
| - Map<String, SpringFactoriesLoader> loaders = cache.computeIfAbsent( |
| 330 | + Map<String, Factories> factoriesCache = cache.computeIfAbsent( |
331 | 331 | resourceClassLoader, key -> new ConcurrentReferenceHashMap<>());
|
332 |
| - return loaders.computeIfAbsent(resourceLocation, key -> |
333 |
| - new SpringFactoriesLoader(classLoader, loadFactoriesResource(resourceClassLoader, resourceLocation))); |
| 332 | + Factories factories = factoriesCache.computeIfAbsent(resourceLocation, key -> |
| 333 | + new Factories(loadFactoriesResource(resourceClassLoader, resourceLocation))); |
| 334 | + return new SpringFactoriesLoader(classLoader, factories.byType()); |
334 | 335 | }
|
335 | 336 |
|
336 | 337 | protected static Map<String, List<String>> loadFactoriesResource(ClassLoader classLoader, String resourceLocation) {
|
@@ -673,4 +674,8 @@ static FailureHandler handleMessage(BiConsumer<Supplier<String>, Throwable> mess
|
673 | 674 | }
|
674 | 675 | }
|
675 | 676 |
|
| 677 | + |
| 678 | + private record Factories(Map<String, List<String>> byType) { |
| 679 | + |
| 680 | + } |
676 | 681 | }
|
0 commit comments