问题描述
Spring Cloud Stream的文件-供应商依赖包括FileSupplierConfiguration
,它配置一个文件消息源(来自Spring集成)。我需要定制这个@配置提供的FileReadingMessageSource
,但我不确定最好的方法。它仅提供了控制其@Bean
%s的基本属性,但我需要更多。
我考虑将FileSupplierConfiguration
从应用程序中排除,但之后我必须将其中的大部分代码复制到我自己的@Confgation类中。显然,这不是一个理想的解决方案。
那么如何自定义文件消息源,例如使用其他FileListFilter
?
推荐答案
添加一个BeanPostProcessor
@Bean,如下:
@Bean
public BeanPostProcessor inboundFileAdaptorCustomizer() {
return new BeanPostProcessor() {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof FileInboundChannelAdapterSpec) {
//add filter function here
((FileInboundChannelAdapterSpec) bean).filter(files -> ...);
}
return bean;
}
};
}