diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java index b317978b89a..be137dbd672 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java @@ -25,6 +25,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.Deque; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; @@ -494,12 +495,11 @@ class ConfigurationClassParser { } /** - * Returns {@code @Import} class, considering all meta-annotations. + * Returns {@code @Import} classes, considering all meta-annotations. */ private Set getImports(SourceClass sourceClass) throws IOException { Set imports = new LinkedHashSet<>(); - Set visited = new LinkedHashSet<>(); - collectImports(sourceClass, imports, visited); + collectImports(sourceClass, imports, new HashSet<>()); return imports; } @@ -1038,7 +1038,7 @@ class ConfigurationClassParser { return Collections.emptySet(); } String[] classNames = (String[]) annotationAttributes.get(attribute); - Set result = new LinkedHashSet<>(); + Set result = CollectionUtils.newLinkedHashSet(classNames.length); for (String className : classNames) { result.add(getRelated(className)); } diff --git a/spring-context/src/main/java/org/springframework/context/aot/RuntimeHintsBeanFactoryInitializationAotProcessor.java b/spring-context/src/main/java/org/springframework/context/aot/RuntimeHintsBeanFactoryInitializationAotProcessor.java index ffb4c40d6fc..75fa1bb2c61 100644 --- a/spring-context/src/main/java/org/springframework/context/aot/RuntimeHintsBeanFactoryInitializationAotProcessor.java +++ b/spring-context/src/main/java/org/springframework/context/aot/RuntimeHintsBeanFactoryInitializationAotProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2024 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. @@ -36,6 +36,7 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.context.annotation.ImportRuntimeHints; import org.springframework.core.log.LogMessage; import org.springframework.lang.Nullable; +import org.springframework.util.CollectionUtils; /** * {@link BeanFactoryInitializationAotProcessor} implementation that processes @@ -76,8 +77,9 @@ class RuntimeHintsBeanFactoryInitializationAotProcessor implements BeanFactoryIn private Set> extractFromBeanDefinition(String beanName, ImportRuntimeHints annotation) { - Set> registrars = new LinkedHashSet<>(); - for (Class registrarClass : annotation.value()) { + Class[] registrarClasses = annotation.value(); + Set> registrars = CollectionUtils.newLinkedHashSet(registrarClasses.length); + for (Class registrarClass : registrarClasses) { if (logger.isTraceEnabled()) { logger.trace(LogMessage.format("Loaded [%s] registrar from annotated bean [%s]", registrarClass.getCanonicalName(), beanName)); diff --git a/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java b/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java index d4951f15141..95bc1d64528 100644 --- a/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java +++ b/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java @@ -22,6 +22,7 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.RecordComponent; import java.lang.reflect.Type; +import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.function.Consumer; @@ -63,7 +64,7 @@ public class BindingReflectionHintsRegistrar { * @param types the types to register */ public void registerReflectionHints(ReflectionHints hints, Type... types) { - Set seen = new LinkedHashSet<>(); + Set seen = new HashSet<>(); for (Type type : types) { registerReflectionHints(hints, seen, type); } diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesScanner.java b/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesScanner.java index 7ff998ad4eb..a76b1a4b588 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesScanner.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesScanner.java @@ -21,7 +21,6 @@ import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.HashSet; -import java.util.LinkedHashSet; import java.util.List; import java.util.Set; @@ -46,6 +45,7 @@ import org.springframework.core.type.filter.AnnotationTypeFilter; import org.springframework.core.type.filter.TypeFilter; import org.springframework.lang.Nullable; import org.springframework.util.ClassUtils; +import org.springframework.util.CollectionUtils; import org.springframework.util.ResourceUtils; /** @@ -66,7 +66,7 @@ public final class PersistenceManagedTypesScanner { private static final boolean shouldIgnoreClassFormatException = SpringProperties.getFlag(IGNORE_CLASSFORMAT_PROPERTY_NAME); - private static final Set entityTypeFilters = new LinkedHashSet<>(4); + private static final Set entityTypeFilters = CollectionUtils.newLinkedHashSet(4); static { entityTypeFilters.add(new AnnotationTypeFilter(Entity.class, false)); diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java b/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java index 787c90f33f0..a1b659b23a3 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java @@ -93,7 +93,7 @@ public class MockServletContext implements ServletContext { private static final String TEMP_DIR_SYSTEM_PROPERTY = "java.io.tmpdir"; - private static final Set DEFAULT_SESSION_TRACKING_MODES = new LinkedHashSet<>(4); + private static final Set DEFAULT_SESSION_TRACKING_MODES = CollectionUtils.newLinkedHashSet(3); static { DEFAULT_SESSION_TRACKING_MODES.add(SessionTrackingMode.COOKIE); diff --git a/spring-test/src/main/java/org/springframework/test/context/TestContextManager.java b/spring-test/src/main/java/org/springframework/test/context/TestContextManager.java index 6754b221033..1da2f79decc 100644 --- a/spring-test/src/main/java/org/springframework/test/context/TestContextManager.java +++ b/spring-test/src/main/java/org/springframework/test/context/TestContextManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2023 the original author or authors. + * Copyright 2002-2024 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. @@ -20,7 +20,6 @@ import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; -import java.util.LinkedHashSet; import java.util.List; import java.util.Set; @@ -29,6 +28,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.lang.Nullable; import org.springframework.util.ClassUtils; +import org.springframework.util.CollectionUtils; import org.springframework.util.ReflectionUtils; /** @@ -92,7 +92,7 @@ public class TestContextManager { private static final Log logger = LogFactory.getLog(TestContextManager.class); - private static final Set> skippedExceptionTypes = new LinkedHashSet<>(4); + private static final Set> skippedExceptionTypes = CollectionUtils.newLinkedHashSet(3); static { // JUnit Jupiter diff --git a/spring-web/src/testFixtures/java/org/springframework/web/testfixture/servlet/MockServletContext.java b/spring-web/src/testFixtures/java/org/springframework/web/testfixture/servlet/MockServletContext.java index decef214a57..c0018eb48f9 100644 --- a/spring-web/src/testFixtures/java/org/springframework/web/testfixture/servlet/MockServletContext.java +++ b/spring-web/src/testFixtures/java/org/springframework/web/testfixture/servlet/MockServletContext.java @@ -93,7 +93,7 @@ public class MockServletContext implements ServletContext { private static final String TEMP_DIR_SYSTEM_PROPERTY = "java.io.tmpdir"; - private static final Set DEFAULT_SESSION_TRACKING_MODES = new LinkedHashSet<>(4); + private static final Set DEFAULT_SESSION_TRACKING_MODES = CollectionUtils.newLinkedHashSet(3); static { DEFAULT_SESSION_TRACKING_MODES.add(SessionTrackingMode.COOKIE);