Если вы используете рамки инъекции зависимостей вы можете добавить параметры в какой-то боб и получить этот компонент по программным поиску из пользовательского преобразователя
или
вам может создать обертку для класса источника и передать параметр этой оболочке (предположим, что класс источника имеет тип Source
, а цель Destination
):
public class DataWrapper {
String param;
Source wrapped;
public DataWrapper(Source wrapped, String param) {
this.wrapped = wrapped;
this.param = param;
}
public String getParam() {
return param;
}
public Source getWrapped() {
return wrapped;
}
}
Затем вы должны написать конфигурацию отображения и пользовательский преобразователь для отображения DataWrapper
класса к вашему Destination
классу:
<custom-converters>
<converter type="your converter">
<class-a>DataWrapper</class-a>
<class-b>Destination</class-b>
</converter>
</custom-converters>
Этот конвертер будет обрабатывать param
и вызвать отображение из Source
класса Destination
класса (отображение конфигурация следует также существует):
public Object convert(Object existingDestinationFieldValue, Object sourceFieldValue, Class<?> destinationClass,
Class<?> sourceClass) {
DataWrapper wrapper = (DataWrapper) sourceFieldValue;
String param = wrapper.getParam();
...
return mapper.map(wrapper.getWrapped(), destinationClass);
}
отображение может быть использовано следующим образом:
DataWrapper wrapper = new DataWrapper(source, "no:15, name:time, size:4, covert:test");
mapper.map(wrapper, Test.class);