Выражения используются, когда вы не можете сопоставить источник с целевым свойством или когда constant
не применяется.MapStruct предполагал, что для адресации выражений можно использовать несколько языков.Однако реализован только простой Java (следовательно, "java(... )"
).EL был задуман, но еще не реализован.
Типичный вариант использования, который я использую, - генерация UUID.Но даже там вы можете попробовать новый @Context
для достижения этой цели.
Помните, что содержимое в скобках помещается непосредственно в сгенерированный код.Среда IDE не может проверить ее правильность, и вы будете обнаруживать проблемы только во время компиляции.
Выражения являются ИМХО запасным средством заполнения / пробела для вещей, которые еще не реализованы в MapStruct.
Примечание. Сопоставление цели с источником с помощью пользовательского метода, как предлагается в других ответах, может выполняться автоматически.MapStruct распознает подпись (тип возвращаемого значения, тип источника) и вызывает ваш пользовательский метод.Вы можете сделать это в том же интерфейсе (метод по умолчанию) или в используемом маппере.