首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Camel HeaderFilterStrategy Bean的春季注册

Camel HeaderFilterStrategy Bean的春季注册
EN

Stack Overflow用户
提问于 2018-07-19 04:49:58
回答 1查看 731关注 0票数 1

我很难让Spring-Camel获得一个注册为Bean的HeaderFilterStrategy类,这样它就可以被Camel Route找到。我尝试注释HeaderFilterStrategy定制类似乎是徒劳的……那么我如何注册这个东西,以便在运行时找到它呢?

我有一个camel应用程序,其中包含一个利用自定义HeaderFilterStrategy的路由

Strategy类如下所示:

代码语言:javascript
复制
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:

代码语言:javascript
复制
    SimpleRegistry registry = new SimpleRegistry();
    registry.put("HeaderFilter" ,new HeaderFilter());
    .
    .
    final CamelContext ctx = new DefaultCamelContext(registry);

我在我的路由中引用了它

代码语言:javascript
复制
.to("https://myhost/endpoint&headerFilterStrategy=#HeaderFilter")

就像圣诞夜的拉尔菲和他值得信赖的红骑手BB枪一样,世界上一切都很好。

所以,现在我试着把这个纯粹的骆驼应用程序放在Spring下。我确保所有合适的Camel,Spring-Camel和Spring的东西都是进口的。但是,当我尝试将HeaderStrategy注释为Spring的Bean时,它失败了:

代码语言:javascript
复制
@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 type of "java.lang.String“available,因为这是方法调用中的第一个参数……

那么,我如何让这个东西能够正确地注册注释呢?或者手动注册此bean而不尝试自动连接?我所需要的就是注册为BEAN的类,这样它就可以在运行时被camel找到…至少这是我所理解的需要发生的事情。那么我到底该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2018-07-23 22:13:05

我弄明白了,我没有正确使用添加到我的AppConfig类中的annotationsI:

代码语言:javascript
复制
@Configuration
public class AppConfig{

  @Bean 
  public HeaderFilter HeaderFilter(){
    return new HeaderFilter();
  }
}

我不确定上面的建议是否会奏效,但这显然是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51410789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档