首页 文章

Spring中的Camel HeaderFilterStrategy Bean注册

提问于
浏览
0

我在使用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 回答

  • 0

    我想通了,我没有正确使用注释我在AppConfig类中添加了以下内容:

    @Configuration
    public class AppConfig{
    
      @Bean 
      public HeaderFilter HeaderFilter(){
        return new HeaderFilter();
      }
    }
    

    我不确定上述建议是否有效,但这显然有效 .

相关问题