From b3b27133b1796f00426f74cdbfc56d15489945fd Mon Sep 17 00:00:00 2001 From: Senrian Date: Sat, 28 Feb 2026 21:37:18 +0000 Subject: [PATCH] [ISSUE #81] Fix bean name standardization Use Introspector.decapitalize to follow Spring's bean naming rules: - 'URL' stays as 'URL' (not 'uRL') - 'X' becomes 'x' - 'FooBah' becomes 'fooBah' Fixes: #81 --- .../beans/factory/xml/XmlBeanDefinitionReader.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/beans/factory/xml/XmlBeanDefinitionReader.java b/src/main/java/org/springframework/beans/factory/xml/XmlBeanDefinitionReader.java index c63d778..33a9110 100644 --- a/src/main/java/org/springframework/beans/factory/xml/XmlBeanDefinitionReader.java +++ b/src/main/java/org/springframework/beans/factory/xml/XmlBeanDefinitionReader.java @@ -17,6 +17,7 @@ import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; +import java.beans.Introspector; import java.io.IOException; import java.io.InputStream; import java.util.List; @@ -106,8 +107,9 @@ protected void doLoadBeanDefinitions(InputStream inputStream) throws DocumentExc //id优先于name beanName = StrUtil.isNotEmpty(beanId) ? beanId : beanName; if (StrUtil.isEmpty(beanName)) { - //如果id和name都为空,将类名的第一个字母转为小写后作为bean的名称 - beanName = StrUtil.lowerFirst(clazz.getSimpleName()); + // 使用 Introspector.decapitalize 遵循 Spring 源码规则: + // "URL" -> "URL", "X" -> "x", "FooBah" -> "fooBah" + beanName = Introspector.decapitalize(clazz.getSimpleName()); } BeanDefinition beanDefinition = new BeanDefinition(clazz);