From 2434bb15404c3f3d7a9b05c3d10ffb024d4c99b4 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Sun, 13 Jul 2025 16:33:37 +0200 Subject: [PATCH 1/2] Polishing --- .../annotation/ConfigurationClass.java | 1 + ...onfigurationClassBeanDefinitionReader.java | 23 +++++++++++-------- .../ConfigurationBeanNameTests.java | 8 +++++-- .../annotation6/ComponentForScanning.java | 1 + .../annotation6/ConfigForScanning.java | 2 ++ 5 files changed, 23 insertions(+), 12 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java index cda8e8547a0..8dfb08292d0 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java @@ -128,6 +128,7 @@ final class ConfigurationClass { * @param metadata the metadata for the underlying class to represent * @param beanName name of the {@code @Configuration} class bean * @param scanned whether the underlying class has been registered through a scan + * @since 6.2 */ ConfigurationClass(AnnotationMetadata metadata, String beanName, boolean scanned) { Assert.notNull(beanName, "Bean name must not be null"); diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java index a9184ad3081..59cbd37af6c 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java @@ -18,10 +18,7 @@ package org.springframework.context.annotation; import java.lang.reflect.Constructor; import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Set; @@ -194,13 +191,19 @@ class ConfigurationClassBeanDefinitionReader { AnnotationAttributes bean = AnnotationConfigUtils.attributesFor(metadata, Bean.class); Assert.state(bean != null, "No @Bean annotation attributes"); - // Consider name and any aliases - List names = new ArrayList<>(Arrays.asList(bean.getStringArray("name"))); - String beanName = (!names.isEmpty() ? names.remove(0) : methodName); - - // Register aliases even when overridden - for (String alias : names) { - this.registry.registerAlias(beanName, alias); + // Consider name and any aliases. + String[] explicitNames = bean.getStringArray("name"); + String beanName; + if (explicitNames.length > 0) { + beanName = explicitNames[0]; + // Register aliases even when overridden below. + for (int i = 1; i < explicitNames.length; i++) { + this.registry.registerAlias(beanName, explicitNames[i]); + } + } + else { + // Default bean name derived from method name. + beanName = methodName; } // Has this effectively been overridden before (for example, via XML)? diff --git a/spring-context/src/test/java/org/springframework/context/annotation/configuration/ConfigurationBeanNameTests.java b/spring-context/src/test/java/org/springframework/context/annotation/configuration/ConfigurationBeanNameTests.java index b63b0309cb0..27f16741338 100644 --- a/spring-context/src/test/java/org/springframework/context/annotation/configuration/ConfigurationBeanNameTests.java +++ b/spring-context/src/test/java/org/springframework/context/annotation/configuration/ConfigurationBeanNameTests.java @@ -64,8 +64,7 @@ class ConfigurationBeanNameTests { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); ctx.setBeanNameGenerator(new AnnotationBeanNameGenerator() { @Override - public String generateBeanName( - BeanDefinition definition, BeanDefinitionRegistry registry) { + public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) { return "custom-" + super.generateBeanName(definition, registry); } }); @@ -78,17 +77,22 @@ class ConfigurationBeanNameTests { ctx.close(); } + @Configuration("outer") @Import(C.class) static class A { + @Component("nested") static class B { + @Bean public String nestedBean() { return ""; } } } + @Configuration("imported") static class C { + @Bean public String s() { return "s"; } } diff --git a/spring-context/src/test/java/org/springframework/context/annotation6/ComponentForScanning.java b/spring-context/src/test/java/org/springframework/context/annotation6/ComponentForScanning.java index 5f9448c536c..2832bd493f3 100644 --- a/spring-context/src/test/java/org/springframework/context/annotation6/ComponentForScanning.java +++ b/spring-context/src/test/java/org/springframework/context/annotation6/ComponentForScanning.java @@ -20,4 +20,5 @@ import org.springframework.stereotype.Component; @Component public class ComponentForScanning { + } diff --git a/spring-context/src/test/java/org/springframework/context/annotation6/ConfigForScanning.java b/spring-context/src/test/java/org/springframework/context/annotation6/ConfigForScanning.java index 76efe3bf90a..9bf010d4187 100644 --- a/spring-context/src/test/java/org/springframework/context/annotation6/ConfigForScanning.java +++ b/spring-context/src/test/java/org/springframework/context/annotation6/ConfigForScanning.java @@ -22,8 +22,10 @@ import org.springframework.context.annotation.Configuration; @Configuration public class ConfigForScanning { + @Bean public TestBean testBean() { return new TestBean(); } + } From 21807832c8e560b3b5d52577b4582a17d06348e4 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Sun, 13 Jul 2025 16:33:52 +0200 Subject: [PATCH 2/2] Upgrade to Jetty 12.0.23, Netty 4.1.122, Gson 2.13.1, Caffeine 3.2.1 --- framework-platform/framework-platform.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/framework-platform/framework-platform.gradle b/framework-platform/framework-platform.gradle index da99bc4d168..f7f5778f156 100644 --- a/framework-platform/framework-platform.gradle +++ b/framework-platform/framework-platform.gradle @@ -9,15 +9,15 @@ javaPlatform { dependencies { api(platform("com.fasterxml.jackson:jackson-bom:2.18.4")) api(platform("io.micrometer:micrometer-bom:1.14.8")) - api(platform("io.netty:netty-bom:4.1.121.Final")) + api(platform("io.netty:netty-bom:4.1.122.Final")) api(platform("io.netty:netty5-bom:5.0.0.Alpha5")) api(platform("io.projectreactor:reactor-bom:2024.0.7")) api(platform("io.rsocket:rsocket-bom:1.1.5")) api(platform("org.apache.groovy:groovy-bom:4.0.27")) api(platform("org.apache.logging.log4j:log4j-bom:2.21.1")) api(platform("org.assertj:assertj-bom:3.27.3")) - api(platform("org.eclipse.jetty:jetty-bom:12.0.21")) - api(platform("org.eclipse.jetty.ee10:jetty-ee10-bom:12.0.21")) + api(platform("org.eclipse.jetty:jetty-bom:12.0.23")) + api(platform("org.eclipse.jetty.ee10:jetty-ee10-bom:12.0.23")) api(platform("org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.1")) api(platform("org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.3")) api(platform("org.junit:junit-bom:5.13.3")) @@ -26,11 +26,11 @@ dependencies { constraints { api("com.fasterxml:aalto-xml:1.3.2") api("com.fasterxml.woodstox:woodstox-core:6.7.0") - api("com.github.ben-manes.caffeine:caffeine:3.2.0") + api("com.github.ben-manes.caffeine:caffeine:3.2.1") api("com.github.librepdf:openpdf:1.3.43") api("com.google.code.findbugs:findbugs:3.0.1") api("com.google.code.findbugs:jsr305:3.0.2") - api("com.google.code.gson:gson:2.12.1") + api("com.google.code.gson:gson:2.13.1") api("com.google.protobuf:protobuf-java-util:4.30.2") api("com.h2database:h2:2.3.232") api("com.jayway.jsonpath:json-path:2.9.0")