Как внедрить ObjectMapper в RouteBuilder - PullRequest
0 голосов
/ 30 января 2019

Сейчас я получаю объектMapper в процессоре следующим образом:

.process(exchange -> {
         var objectMapper = getContext().getRegistry()
                        .lookupByNameAndType("json-jackson", ObjectMapper.class);
      ...

Я пытался внедрить этот объект, используя @BeanInject("json-jackson"), но я полагаю, что я не использую его правильно, потому что онноль.Я не использую Spring или Guice, просто старую Java и инициализирую построитель маршрутов, используя new.

Также я пытался поместить поиск в конструктор построителя маршрутов, но там я получаю ноль.

1 Ответ

0 голосов
/ 31 января 2019

Если вы не используете какие-либо платформы IoC и создаете класс самостоятельно с помощью new, то внедрение зависимости не происходит автоматически.Затем вам нужно поискать и установить объект самостоятельно.Например, вы можете добавить к нему метод getter / setter, а затем создать его с помощью new, а затем выполнить поиск объекта и впоследствии вызвать метод setter.

Если у вас есть доступ к CamelContext, вы можете выполнить поисккак вы делаете выше, если нет, вам нужно искать в реестре, который вы фактически используете, если это его JNDI или что-то еще.Примечание. По умолчанию Camel будет использовать реестр JNDI, но вы можете предоставить реестр CamelContext при создании его экземпляра.

Также, если у вас есть CamelContext, вы можете использовать его инжектор для создания нового экземпляра, который имеетнекоторая поддержка для внедрения зависимостей (если вы используете аннотации Camel).Существует getInjector из CamelContext, который должен иметь API для создания нового экземпляра через тип класса.

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