Службу преобразования можно использовать для прямого преобразования между пользовательским интерфейсом и бизнес-объектами.
Допустим, у меня есть веб-приложение с выпадающим списком продуктов. Очень просто определить ProductConversionService, который преобразуется из значения раскрывающегося списка (скажем, id 4) в Product. Теперь в моем коде (контроллер, API и т. Д.) Я просто ссылаюсь на продукт, и все происходит автоматически.
В старых интерфейсах я видел много кода, посвященного этому преобразованию. Я приведу заведомо грубый пример:
String productIdParam = request.getParameter("productId");
// Validate that the param exists, is numeric, etc.....
Long productId = Long.valueOf(productIdParam);
Product product = productManager.findProduct(productId);
Этот код также сложнее протестировать, поскольку мне нужно создать фиктивный запрос, дать ему productIdParameter и так далее. Также мне нужно, чтобы productManager был доступен везде, где это необходимо.
С ConversionService я могу просто поместить это в JSP:
<form:select path="mystuff.product">
<option value="1">Nook</option>
<option value="2">Cranny</option>
</form:select>
Когда мой контроллер Spring MVC получает запрос, mystuff.getProduct () имеет выбранный продукт. Чисто и просто. И я могу использовать это и за пределами веб-уровня.