将 DB 实体传递给另一个 class 给出,无法自动装配错误
Pass DB Entity to another class gives, could not autowire error
不确定我是否理解为什么我在下面的代码中遇到编译错误。
我正在循环一个数据库实体列表,如果它不存在于我的主列表中,那么我创建一个新的骆驼路线并将该实体作为参数传递给另一个 class.
@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 class 我有:
@Component
public class MailRouteBuilder extends RouteBuilder {
public MailRouteBuilder(CamelContext camelContext, MailDataSource mailDataSource) {
super(camelContext);
}
但是在 MailDataSource mailDataSource 上出现以下编译错误:
无法自动装配。未找到 'MailDataSource' 类型的 Bean。
有什么想法吗?
您正在尝试以两种不同的方式实例化 MailRouteBuilder:
- 在MailRouteProcess.exchange中手动调用构造函数,并传递从 MailDataSourceService 获得的 MailDataSource。
- 另一方面,您将 MailRouteBuilder 注释为 @Component,因此 Spring 将尝试实例化它。在这种情况下,MailDataSource 必须是托管 bean。从你的错误来看,它不是。
总而言之,错误不是源于将一个实例传递给另一个实例,而是源于自动装配失败。 (您需要将 MailRouteBuilder 设为托管组件吗?)
不确定我是否理解为什么我在下面的代码中遇到编译错误。 我正在循环一个数据库实体列表,如果它不存在于我的主列表中,那么我创建一个新的骆驼路线并将该实体作为参数传递给另一个 class.
@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 class 我有:
@Component
public class MailRouteBuilder extends RouteBuilder {
public MailRouteBuilder(CamelContext camelContext, MailDataSource mailDataSource) {
super(camelContext);
}
但是在 MailDataSource mailDataSource 上出现以下编译错误:
无法自动装配。未找到 'MailDataSource' 类型的 Bean。
有什么想法吗?
您正在尝试以两种不同的方式实例化 MailRouteBuilder:
- 在MailRouteProcess.exchange中手动调用构造函数,并传递从 MailDataSourceService 获得的 MailDataSource。
- 另一方面,您将 MailRouteBuilder 注释为 @Component,因此 Spring 将尝试实例化它。在这种情况下,MailDataSource 必须是托管 bean。从你的错误来看,它不是。
总而言之,错误不是源于将一个实例传递给另一个实例,而是源于自动装配失败。 (您需要将 MailRouteBuilder 设为托管组件吗?)