Spring Bean 默认名称生成策略

81 阅读1分钟

如果通过上下文手动获取获取对象,可能会报错

    ApplicationContext.getBean("BEAN")

容器对象名称生成策略对应方法:java.beans.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);
}

如果类名开头两个字母都是大写,则对象名与类名一致,否则将类名首字母小写后作为对象名

如果不想改变类名,可以手动指定名称,例如:@Service("beanName")