不确定我理解为什么我在下面的代码中遇到编译错误。 我正在循环一个列表数据库实体,如果它不在我的主列表中,那么我将创建一个新的骆驼路线并将该实体作为参数传递给另一个类。
@Component
public class MailRouteProcess implements Processor {
private static List<MailDataSource> mailDSList = new ArrayList<>();
@Autowired
MailDataSourceService mailDataSourceService;
@Autowired
private ApplicationContext applicationContext;
@Autowired
CamelContext camelContext;
@Override
public void process(Exchange exchange) throws Exception {
List<MailDataSource> mailDataSourceList = mailDataSourceService.findAll();
for(MailDataSource mailDataSource : mailDataSourceList) {
if(!mailDSList.contains(mailDataSource)) {
camelContext=(CamelContext)applicationContext.getBean("mainCamelContext");
camelContext.addRoutes(new MailRouteBuilder(camelContext, mailDataSource));
mailDSList.add(mailDataSource);
}
}
}
}
然后在我的MailRouteBuilder类中:
@Component
public class MailRouteBuilder extends RouteBuilder {
public MailRouteBuilder(CamelContext camelContext, MailDataSource mailDataSource) {
super(camelContext);
}
但是在MailDataSource mailDataSource上收到以下编译错误:
无法自动接线。找不到“ MailDataSource”类型的Bean。
有什么想法吗?
答案 0 :(得分:2)
您试图以两种不同的方式实例化MailRouteBuilder:
总结起来,该错误不是源于将一个实例传递给另一个实例,而是源于自动装配失败。 (您需要MailRouteBuilder成为托管组件吗?)