Spring-Camel在将HeaderFilterStrategy类注册为Bean时遇到了困难,因此可以通过Camel Route找到它。我尝试注释HeaderFilterStrategy自定义类的尝试似乎是徒劳的...所以我该如何注册该东西以便在运行时找到它?
我有一个骆驼应用程序,该应用程序具有使用自定义HeaderFilterStrategy的路由
策略类如下:
public class HeaderFilter implements HeaderFilterStrategy {
@Override
public boolean applyFilterToCamelHeaders(String s, Object o, Exchange exchange) {
return false;
}
@Override
public boolean applyFilterToExternalHeaders(String s, Object o, Exchange exchange) {
return true;
}
}
我使用一个简单的注册表向骆驼注册:
SimpleRegistry registry = new SimpleRegistry();
registry.put("HeaderFilter" ,new HeaderFilter());
.
.
final CamelContext ctx = new DefaultCamelContext(registry);
我在“路线”中引用了它
.to("https://myhost/endpoint&headerFilterStrategy=#HeaderFilter")
在圣诞节之夜,就像拉尔夫(Ralphy)带着他值得信赖的Red Rider BB Gun一样,一切都与世界同在。
因此,现在我正尝试将这个纯骆驼应用程序放在Spring之下。我确保所有适当的Camel以及Spring-Camel和Spring都已导入。.但是,当我尝试将HeaderStrategy注释为Spring Bean时,它失败了:
@Component
public class HeaderFilter implements HeaderFilterStrategy {
@Bean
@Override
public boolean applyFilterToCamelHeaders(String s, Object o, Exchange exchange) {
return false;
}
@Override
public boolean applyFilterToExternalHeaders(String s, Object o, Exchange exchange) {
return true;
}
}
现在,当我执行此操作时,IDE基本上会告诉我它无法自动连接方法调用中的任何参数,因为存在多个String或Object类型的bean,并且没有找到Exchange类型的bean。 >
在运行时,Camel确实尝试解释路由,但是由于“没有合格的Bean类型的“ java.lang.String”可用而引发了故障,因为这是方法调用中的第一个参数...
那么,如何获得能够正确注册注释的东西?还是手动注册此bean,而不尝试自动装配?我所需要做的就是将该类注册为BEAN,以便可以在运行时通过骆驼找到它。或者至少这就是我所理解的需要发生的事情……那么我该怎么做呢?
答案 0 :(得分:0)
我弄清楚了,我没有正确使用批注我在AppConfig类中添加了以下内容:
@Configuration
public class AppConfig{
@Bean
public HeaderFilter HeaderFilter(){
return new HeaderFilter();
}
}
我不确定以上建议是否会奏效,但这显然可以。