本文分类:
Spring

Spring 对注解形式的 bean 的名字的默认处理规则是:

  1. 当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致;
  2. 否则将首字母小写,再拼接后面的字符;

代码:AnnotationBeanNameGenerator

protected String buildDefaultBeanName(BeanDefinition definition) {
    String beanClassName = definition.getBeanClassName();
    Assert.state(beanClassName != null, "No bean class name set");
    String shortClassName = ClassUtils.getShortName(beanClassName);
    return Introspector.decapitalize(shortClassName);
}

Introspector.decapitalize 如下:

public static String decapitalize(String name) {
    if (name == null || name.length() == 0) {
        return name;
    }
    if (name.length() > 1 && Character.isUpperCase(name.charAt(1)) &&
                    Character.isUpperCase(name.charAt(0))){
        return name;
    }
    char chars[] = name.toCharArray();
    chars[0] = Character.toLowerCase(chars[0]);
    return new String(chars);
}
本文来自 [时光记 - 王智超的个人空间](www.hiwzc.com),转载请注明出处。