2015-03-04 2 views
2

Я относительно новичок в Spring, и я немного запутался в теге.Spring Framework: какова цель <mvc: annotation-driven />

После просмотра документации и поиска по различным сообщениям, похоже, основное использование заключается в том, что Spring MVC требуется отправлять запросы на @Controllers.

Я создал контроллер с двумя requestMappings:

@RequestMapping (метод = RequestMethod.GET, значение = "/ здоровье") @RequestMapping (метод = RequestMethod.GET, значение = "/ тест")

Я тестировал веб-приложение с и без в файле servlet.xml, и это не похоже, что любая разница была сделана с отсутствием или отсутствием. Запросы, похоже, до сих пор доходили до моего контроллера.

Может ли кто-нибудь объяснить мне, для чего именно используется этот тег?

Заранее благодарен!

ответ

8

Опора для @Controller и @RequestMapping предоставляется весной по умолчанию. Однако, включив mvc:annotation-driven, вы получаете поддержку для обработки запросов, которые сопоставляются с методами аннотированных контроллеров, такими как декларативная проверка, форматирование и преобразование. Отрывок из spring's blog, что ввел новый конфиг особенности

Он применяет разумные значения по умолчанию, основанные на том, что присутствует в вашем пути к классам. Такие значения по умолчанию включают в себя:

  • Использование Spring 3 Тип ConversionService как более простой и надежной альтернативой JavaBeans PropertyEditors

  • Поддержка для форматирования числовых полей с @NumberFormat

  • Поддержка форматирования даты, календарь , и поля времени Joda с @DateTimeFormat, если Joda Time находится на пути к классам
  • Поддержка проверки входных данных @Controller с @Valid, если поставщик JSR-303 находится на пути к классам
  • Поддержка чтения и записи XML, если JAXB находится на пути к классам
  • Поддержка чтения и записи JSON, если Джексон находится на пути к классам

Другой связанный полезный блог post

Если этот тег не добавлен в XML, тогда вам придется вручную указать 0BAкомпоненты для компонентов, таких как HandlerAdapter, HandlerMapping, Инициализатор привязки, конвертеры запросов и т. Д. Этот тег поможет s , регистрируя следующие компоненты.

  • DefaultAnnotationHandlerMapping - это реализация HandlerMapping , который отображает HTTP запросов к методам обработчика , определенных с использованием @RequestMapping аннотацию.
  • AnnotationMethodHandlerAdapter - Он отвечает за сканирование контроллер определить методы (и параметры) аннотированные с @MVC аннотациями. Он сканирует и обрабатывает методы обработчиков, аннотированные с помощью @RequestMapping. Также обрабатывает @RequestParam, @ModelAttribute, @SessionAttributes и @InitBinder аннотации.
  • ConfigurableWebBindingInitializer - Инициализатор для веб-данных Binder. Помогает в декларативно настройке Web Binder с валидаторы, конверсионные услуги, редакторы свойств и т.д.
  • LocalValidatorFactoryBean - Реализует интерфейс валидатор и позволяет проверку JSR303. Его вводят в ConfigurableWebBindingInitializer.
  • ФорматированиеConversionServiceFactoryBean - Завод преобразования, который возвращает услуги преобразования для базовых объектов, таких как дата и цифры. Эта фабрика снова вводится в ConfigurableWebBindingInitializer.
  • Поддержка конвертеров сообщений

Наконец, более формальное определение в официальном docs

Смежные вопросы