Spring Camel file组件设置processStrategy报找不到合适setter如何解决
问题原因
Camel 2.x File组件中,processStrategy参数本身只接收GenericFileProcessStrategy类型的对象实例,不支持字符串格式的Bean ID引用,你直接在URI中传入字符串类型的Bean引用就会触发类型转换失败的异常。
修复方案
方案1(推荐):使用专用的引用参数
URI中专门提供了processStrategyRef参数用于传入Bean ID引用,同时注意你现有配置的URI末尾多了一个冗余的双引号,修改后配置如下:
<bean id="genericFileNoOpProcessStrategy" class="org.apache.camel.component.file.strategy.GenericFileNoOpProcessStrategy"/> <routeContext id="routes" xmlns="http://camel.apache.org/schema/spring"> <route id="route"> <from uri="seda:someEvent"/> <pollEnrich> <constant>file:/folder?fileName=file.csv&processStrategyRef=#genericFileNoOpProcessStrategy</constant> </pollEnrich> </route> </routeContext>
方案2:显式声明端点注入Bean
如果你需要直接使用processStrategy参数,可以预先声明File端点并注入策略Bean:
<bean id="genericFileNoOpProcessStrategy" class="org.apache.camel.component.file.strategy.GenericFileNoOpProcessStrategy"/> <!-- 显式声明端点并注入processStrategy --> <endpoint id="csvFileEndpoint" uri="file:/folder?fileName=file.csv"> <property name="processStrategy" ref="genericFileNoOpProcessStrategy"/> </endpoint> <routeContext id="routes" xmlns="http://camel.apache.org/schema/spring"> <route id="route"> <from uri="seda:someEvent"/> <pollEnrich> <constant>ref:csvFileEndpoint</constant> </pollEnrich> </route> </routeContext>
内容的提问来源于stack exchange,提问作者codependent
相关产品推荐
相关产品推荐

