自动装配构造函数时没有路线的骆驼

时间:2018-04-10 12:32:17

标签: java spring apache-camel

我使用带模块的弹簧靴。我有一个包含多个子模块的父项目。

使用Contructor Autowiring配置路由时,Camel Routes无法启动。

我得到Total 0 routes, of which 0 are started当启动像这样的构造函数时。

private final ScanProcessor scanProcessor;
private final ScheduleProcessor scheduleProcessor;
private final TagProcessor tagProcessor;
private final LatestScanProcessor latestScanProcessor;
private final RabbitMqService rabbitMqService;

@Autowired
public DashboardRoute(ScanProcessor scanProcessor,
                      ScheduleProcessor scheduleProcessor,
                      TagProcessor tagProcessor,
                      LatestScanProcessor latestScanProcessor,
                      RabbitMqService rabbitMqService){
    this.scanProcessor = scanProcessor;
    this.scheduleProcessor = scheduleProcessor;
    this.tagProcessor = tagProcessor;
    this.latestScanProcessor = latestScanProcessor;
    this.rabbitMqService = rabbitMqService;
}

@Override
public void configure() throws Exception {
           from(CONSUME_SCHEDULE_ROUTE)
            .routeId("consume-schedule")
            .process(scheduleProcessor);  // no strings
}

当我不对任何豆子进行自动装配并对这条路线进行delcare时,整个过程都有效。

 from(CONSUME_SCHEDULE_ROUTE)
   .routeId("consume-schedule")
   .process("scheduleProcessor")  // notice this is a string

骆驼是否支持弹簧路径Contructor自动装配?我是否需要采取一些额外的配置步骤才能正确处理?我更喜欢直接链接bean,当我重构它连接回来的类名时。

1 个答案:

答案 0 :(得分:2)

我尝试了与你相似的例子,但它运作正常。您可以确保在路由类和所有处理器类和服务类中都有@Compoent。

您也可以尝试在局部变量上添加@Autowired。 (构造函数应该可以正常工作。这只是确保构造函数工作的额外工具)

#!/bin/bash
ssh server1 <<'EOF'
  echo one $HOSTNAME
  ssh server2 'echo two $HOSTNAME'    
  echo three $HOSTNAME
EOF

希望这有帮助。