我的来源有一个常数,即首字母降低的类名。
Spring 是否有实用方法可以将类类型转换为首字母降低的字符串?这使我可以安全地重构类名。
例如:
SpringXXX.defaultBeanNameYYY(MyCustomBeanFactoryProcessor.class)
Run Code Online (Sandbox Code Playgroud)
应该产生:
myCustomBeanFactoryProcessor
Run Code Online (Sandbox Code Playgroud)
默认情况下,会调用形成 bean 名称的机制BeanNameGenerator
(根据上下文的类型,可能是 theAnnotationBeanNameGenerator
或 the DefaultBeanNameGenerator
)。要生成名称,需要一个 bean 定义和该定义所在的上下文:
new AnnotationBeanNameGenerator().generateBeanName(definition, context);
Run Code Online (Sandbox Code Playgroud)
例如,您可以在给定实例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);
}
}
Run Code Online (Sandbox Code Playgroud)
最后,如果我们放弃上下文和 Spring 所做的所有检查,我们可以只执行:
Introspector.decapitalize(MyCustomBeanFactoryProcessor.class.getSimpleName());
Run Code Online (Sandbox Code Playgroud)
或者
Introspector.decapitalize(ClassUtils.getShortName(MyCustomBeanFactoryProcessor.class));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2144 次 |
最近记录: |