我的资料来源有一个常量,该常量是具有较低首字母的类名称。
是否有Spring实用程序方法将类类型转换为首字母降低的字符串?这使我可以安全地重构类名。
例如:
SpringXXX.defaultBeanNameYYY(MyCustomBeanFactoryProcessor.class)
应该产生:
myCustomBeanFactoryProcessor
最佳答案
默认情况下,形成bean名称的机制称为BeanNameGenerator
(取决于上下文的类型,它可以是AnnotationBeanNameGenerator
或DefaultBeanNameGenerator
)。要生成名称,它需要一个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));