我在使用Spring-Camel获取注册为Bean的HeaderFilterStrategy类时遇到困难,因此可以通过Camel Route找到它 . 我试图注释HeaderFilterStrategy自定义类似乎是徒劳的...所以如何注册这个东西,以便在运行时找到它?
我有一个使用自定义HeaderFilterStrategy的路由的camel应用程序
策略类看起来像:
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;
}
}
我使用简单的注册表将其注册到camel:
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注释为Bean for Spring并且它失败时:
@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会尝试解释路由,但是抛出“No Qualifying bean type of java.lang.String”可用的失败,因为这是方法调用中的第一个参数...
那么,我怎样才能让这个东西能够正确注册注释?或者手动注册这个bean而不试图自动装配?我需要的只是要注册为BEAN的类,所以它可以在运行时被骆驼找到......或者至少这是我理解需要发生的......所以我怎么做到这一点?
1 回答
我想通了,我没有正确使用注释我在AppConfig类中添加了以下内容:
我不确定上述建议是否有效,但这显然有效 .