如果您的目标是以编程方式注册bean(使用自定义bean名称)
你可以使用
BeanDefinitionRegistryPostProcessor
接口是:
标准BeanFactoryPostProcessor SPI的扩展,允许
在常规的bean定义之前注册更多的bean定义
BeanFactoryPostProcessor检测开始。特别地,
beanDefinitionRegistryPostProcessor可以注册更多bean
定义,进而定义BeanFactoryPostProcessor实例。
例如(这里我想注册
MyBean
名来自的类
bean.name
财产):
@Component
public class BeanDefinitionRegistryPP implements BeanDefinitionRegistryPostProcessor, EnvironmentAware {
private Environment env;
@Override
public void setEnvironment(Environment environment) {
this.env=environment;
}
@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
GenericBeanDefinition beanDefinition= new GenericBeanDefinition();
beanDefinition.setBeanClass(MyBean.class);
registry.registerBeanDefinition(env.getProperty("bean.name"), beanDefinition);
}
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
// no code
}
}