ImportBeanDefinitionRegistrar与BeanDefinitionRegistryPostProcessor

时间:2015-09-30 08:47:14

标签: spring spring-4

我的用例涉及动态创建bean。我发现它们是两个注册bean定义的选项: ImportBeanDefinitionRegistrarBeanDefinitionRegistryPostProcessor

我想了解两者之间的区别。

谢谢, Prateek

1 个答案:

答案 0 :(得分:0)

BeanDefinitionRegistrat必须与@Import注释一起使用

@Configuration
@Import(MyImportBeanDefinitionRegistrar.class)
public class MainConfiguration {

}

而BeanDefinitionRegistryPostProcessor应该像那样使用

@Bean
public static MyBeanDefinitionRegistryPostProcessor myBeanDefinitionRegistryPostProcessor() {
    return new MyBeanDefinitionRegistryPostProcessor();
}

然而,在Spring 3.2.16中,两者都无法修改我自己用@Bean创建的bean定义,它们似乎很早就被调用了。