MapStruct

Поддерживается только производитель

Компонент camel-mapstruct используется для преобразования POJO с помощью MapStruct (opens in a new tab) .

URI format

mapstruct:className[?options]

Где classNameнаходится полное имя класса POJO, в который нужно преобразовать?

Configuring Options

Компоненты Camel настраиваются на двух отдельных уровнях:

  • уровень компонентов

  • уровень конечной точки

Configuring Component Options

На уровне компонентов задаются общие и общие конфигурации, которые затем наследуются конечными точками. Это самый высокий уровень конфигурации.

Например, компонент может иметь настройки безопасности, учетные данные для аутентификации, URL-адреса для сетевого подключения и т. д.

У некоторых компонентов всего несколько параметров, а у других -- много. Поскольку компоненты обычно имеют предустановленные значения по умолчанию, которые широко используются, зачастую вам может потребоваться настроить лишь несколько параметров компонента, а то и вовсе ни одного.

Вы можете настроить компоненты, используя:

  • Компонент DSL (opens in a new tab) .

  • в файле конфигурации ( application.propertiesфайлы *.yaml, и т.д.).

  • непосредственно в коде Java.

Configuring Endpoint Options

Настройка конечных точек обычно занимает больше времени, поскольку у них есть множество параметров. Эти параметры помогают вам настроить функции конечной точки. Параметры также классифицируются по тому, используется ли конечная точка как потребитель ( от ), как производитель ( от ) или и то, и другое.

Конечные точки чаще всего настраиваются непосредственно в URI конечной точки в виде параметров пути и запроса . Вы также можете использовать Endpoint DSL (opens in a new tab) и DataFormat DSL (opens in a new tab) в качестве типобезопасного способа настройки конечных точек и форматов данных в Java.

Хорошей практикой при настройке параметров является использование заполнителей свойств (opens in a new tab) .

Заполнители свойств обеспечивают несколько преимуществ:

  • Они помогают предотвратить использование жестко запрограммированных URL-адресов, номеров портов, конфиденциальной информации и других настроек.

  • Они позволяют вынести конфигурацию за пределы кода.

  • Они помогают коду стать более гибким и пригодным для повторного использования.

В следующих двух разделах перечислены все параметры, сначала для компонента, а затем для конечной точки.

Component Options

Компонент MapStruct поддерживает 4 параметра, которые перечислены ниже.

lazyStartProducer (producer)

  • Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

  • По умолчанию: false

  • Тип: boolean

mapperPackageName (producer)

  • Обязательные имена пакетов, в которых Camel должен обнаружить классы сопоставления Mapstruct. Несколько имен пакетов можно разделить запятыми.

  • По умолчанию:

  • Тип: String

autowiredEnabled (advanced)

  • Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.

  • По умолчанию: true

  • Тип: boolean

mapStructConverter (advanced)

  • Autowired Для использования пользовательского MapStructConverter, например, для адаптации к специальной среде выполнения.

  • По умолчанию:

  • Тип: MapStructMapperFinder

Endpoint Options

Конечная точка MapStruct настраивается с использованием синтаксиса URI:

mapstruct:className

Со следующими параметрами пути и запроса :

Path Parameters (1 parameters)

className (producer)

  • Обязательно Полное имя класса POJO, которое mapstruct должен преобразовать в (целевой объект).

  • По умолчанию:

  • Тип: String

Query Parameters (2 parameters)

mandatory (producer)

  • Тип: Должен ли существовать преобразователь mapstruct для преобразования в POJO.

  • По умолчанию: true

  • Тип: boolean

lazyStartProducer (producer (advanced))

  • Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

  • По умолчанию: false

  • Тип: boolean

Usage

Setting up MapStruct

Компонент camel-mapstruct должен быть настроен с одним или несколькими именами пакетов для сканирования классов MapStruct Mapper по classpath . Это необходимо, поскольку классы Mapper будут использоваться для преобразования POJO-объектов с помощью MapStruct.

Например, чтобы настроить два пакета, вы можете сделать следующее:

MapstructComponent mc = context.getComponent("mapstruct", MapstructComponent.class);
mc.setMapperPackageName("com.foo.mapper,com.bar.mapper");

Это также можно настроить в application.properties:

camel.component.mapstruct.mapper-package-name = com.foo.mapper,com.bar.mapper

При запуске Camel сканирует эти пакеты на наличие классов, имена которых заканчиваются на Mapper . Затем эти классы анализируются для обнаружения методов сопоставления. Эти методы сопоставления затем регистрируются в реестре Camel Type Converter (opens in a new tab) . Это означает, что вы также можете использовать Type Converter для преобразования POJO-объектов с помощью MapStruct, например:

from("direct:foo")
  .convertBodyTo(MyFooDto.class);

Где MyFooDtoнаходится POJO, в который/из которого MapStruct может преобразовать?

* Camel не поддерживает методы сопоставления, определенные с voidвозвращаемым типом, например, используемые с @MappingTarget.

* Если вы определяете несколько методов отображения для одних и тех же типов from/to, то реализация, выбранная Camel для преобразования типов, потенциально недетерминирована.

Spring Boot Auto-Configuration

При использовании mapstruct с Spring Boot обязательно используйте следующую зависимость Maven для поддержки автоматической настройки:

<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-mapstruct-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>

Компонент поддерживает 5 опций, которые перечислены ниже.

  • По умолчанию: camel.component.mapstruct.autowired-enabled

  • По умолчанию: Тип: Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.

  • Тип: true

  • Boolean

camel.component.mapstruct.enabled

  • Включить ли автоматическую настройку компонента mapstruct. По умолчанию эта опция включена.

  • По умолчанию:

  • Тип: Boolean

camel.component.mapstruct.lazy-start-producer

  • Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

  • По умолчанию: false

  • Тип: Boolean

camel.component.mapstruct.map-struct-converter

  • Для использования пользовательского MapStructConverter, например, для адаптации к специальной среде выполнения. Этот параметр относится к типу org.apache.camel.component.mapstruct.MapStructMapperFinder.

  • По умолчанию:

  • Тип: MapStructMapperFinder

camel.component.mapstruct.mapper-package-name

  • Имя(-я) пакета(-ов), в котором Camel должен обнаруживать классы сопоставления Mapstruct. Несколько имен пакетов можно разделить запятой.

  • По умолчанию:

  • Тип: String