Передача DB Entity в другой класс дает, не может ошибка автопровода - PullRequest
0 голосов
/ 27 апреля 2019

Не уверен, что понимаю, почему я получаю ошибку компиляции в приведенном ниже коде.Я зацикливаю список объектов БД, и если его нет в моем основном списке, я создаю новый маршрут верблюда и передаю объект в качестве параметра другому классу.

@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 Ihave:

@Component
public class MailRouteBuilder extends RouteBuilder {

    public MailRouteBuilder(CamelContext camelContext, MailDataSource mailDataSource) {
        super(camelContext);
    }

Но при получении следующей ошибки компиляции в mailDataSource MailDataSource:

Не удалось выполнить автоматическое подключение.Бины типа «MailDataSource» не найдены.

Есть идеи?

1 Ответ

2 голосов
/ 27 апреля 2019

Вы пытаетесь создать экземпляр MailRouteBuilder двумя различными способами:

  • В MailRouteProcess.exchange вы вызываете конструктор вручную и передаете MailDataSource, полученный из MailDataSourceService.
  • В другом случаеИтак, вы аннотировали MailRouteBuilder как @Component, поэтому Spring попытается создать его экземпляр.В этом случае MailDataSource должен быть управляемым компонентом.Судя по вашей ошибке, это не так.

Подводя итог, можно сказать, что ошибка связана не с передачей экземпляра другому и одному, а с неудачной автопроводкой.(Вам нужен MailRouteBuilder, чтобы быть управляемым компонентом?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...