您的观察实际上是正确的,BeanFactoryPostProcessor是Spring提供一种在将Bean定义/实例提供给应用程序之前对其进行修改的机制的两种方法之一(另一种方法是使用BeanPostProcessors)
您可以绝对使用BeanFactoryPostProcessors来添加/修改Bean定义,这是Spring
Integration代码库中的一个示例,如果用户未明确指定,则会添加一个errorChannel,您可以使用类似的代码来注册新的Bean:
RootBeanDefinition errorChannelDef = new RootBeanDefinition(); errorChannelDef.setBeanClassName(IntegrationNamespaceUtils.base_PACKAGE + ".channel.PublishSubscribeChannel"); BeanDefinitionHolder errorChannelHolder = new BeanDefinitionHolder(errorChannelDef, IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME); BeanDefinitionReaderUtils.registerBeanDefinition(errorChannelHolder, registry);



