2012-08-06

Использование ConversionService в Spring MVC

Привет, всем кто нас читает! Мы продолжаем печатать гостевые статьи. Сегодня у нас опять статья Олега Артемова - нашего давнего коллеги и эксперта по Spring. 

Добрый день всем ! Данная статья посвящена концепции ConversionService, которая была успешно применена в моем текущем проекте. Итак, преамбула:

Как мы видим, это обычная команда, которых в любом Spring – проекте миллионы. С помощью Spring ConversionService мы можем избавиться от примитивных типов в команде и использовать доменную модель. Итак, как это делается:


В документации описан способ немного проще. Моей целью являлось, чтобы конвертеры сами регистрировались в контексте. Итак, рассмотрим подробно:

  • ConvertersHolder – содержит в себе все конвертеры(GenericConverter, Converter, etc…). ExtendedConversionServiceImpl – более расширенная версия ConversionService, которая умеет конвертировать коллекции из одной в другую. 
  • HibernateDaoGenericConverter – generic конвертер. Одним этим конвертером мы можем конвертировать строки в объекты доменной модели. 
  • StringToEntityConverter – интерфейс, с помощью которого строка конвертируется в доменный объект 
  • AutoDetectFormattingServiceFactoryBean – бин, который регистрирует конвертеры. 

Я привел имплементацию метода convert, которая сделана в базовом классе DAO. На самом деле она может быть абсолютно любая. Теперь наша команда выглядит иначе(поля все равно должны совпадать с названиями параметров из реквеста).

Как и прежде, её можно валидировать (см. предыдущие статьи) и решать, что же будет в случае ошибок. Из минусов:

  • Данная концепция может быть применена и для конвертации параметров метода контроллера, но стандартные аннотации валидации на них не действуют, поэтому приходится использовать везде команды.
Подведем итоги. С помощью ConversionService можно избавиться от постоянных вызовов DAO для конвертации параметров в доменную модель и сделать наш код более красивым.

Оригинал статьи тут.  Документация тут.

1 comment:

  1. Wynn Las Vegas & Encore Resort - JSH Hub
    Get Wynn Las Vegas & Encore Resort, Las Vegas, 남양주 출장샵 NV tickets 목포 출장마사지 and best deals from JT Hotels. Wynn Hotel Lobby 인천광역 출장샵 & Sq. 4-star hotel near 도레미시디 출장샵 the Wynn casino. 삼척 출장샵

    ReplyDelete