我的资料来源有一个常量,该常量是具有较低首字母的类名称。

是否有Spring实用程序方法将类类型转换为首字母降低的字符串?这使我可以安全地重构类名。

例如:

SpringXXX.defaultBeanNameYYY(MyCustomBeanFactoryProcessor.class)

应该产生:
myCustomBeanFactoryProcessor

最佳答案

默认情况下,形成bean名称的机制称为BeanNameGenerator(取决于上下文的类型,它可以是AnnotationBeanNameGeneratorDefaultBeanNameGenerator)。要生成名称,它需要一个bean定义和一个上下文,该定义来自于:

new AnnotationBeanNameGenerator().generateBeanName(definition, context);

例如,您可以在给出BeanFactoryPostProcessor实例的ConfigurableListableBeanFactory子类中编写此处理过程:
class MyCustomBeanFactoryProcessor implements BeanFactoryPostProcessor {
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory factory) throws BeansException {
        String beanName = new AnnotationBeanNameGenerator()
                .generateBeanName(new AnnotatedGenericBeanDefinition(MyCustomBeanFactoryProcessor.class),
                                  (BeanDefinitionRegistry) factory);
    }
}

最后,如果我们放弃上下文和Spring所做的所有检查,则可以执行:
Introspector.decapitalize(MyCustomBeanFactoryProcessor.class.getSimpleName());

要么
Introspector.decapitalize(ClassUtils.getShortName(MyCustomBeanFactoryProcessor.class));

09-27 00:35
查看更多