В чем разница между <mvc: annotation-driven /> и <context: annotation-config /> в сервлете? - PullRequest
152 голосов
/ 20 октября 2010

Я мигрирую с весны 2.5 на весну 3.

Они ввели <mvc:annotation-driven />, которая выполняет черную магию.Ожидается, что это будет объявлено только в файле конфигурации сервлета.

В Spring 2.5 я только что использовал теги <context:annotation-config /> и <context:component-scan base='...'/>, объявленные как в application-context.xml, так и в XML конфигурации сервлет-диспетчера с соответствующими базовыми пакетами для сканирования..

Поэтому мне интересно, в чем разница между тегами mvc:annotation-driven и context:annotation-config в конфигурации сервлета и что я могу устранить в конфигурационных файлах Spring 3?

Ответы [ 3 ]

147 голосов
/ 20 октября 2010

<context:annotation-config> объявляет поддержку общих аннотаций, таких как @Required, @Autowired, @PostConstruct и т. Д.

<mvc:annotation-driven /> объявляет явную поддержку управляемых аннотациями контроллеров MVC (т. Е. @RequestMapping, @Controller, хотя их поддержка является поведением по умолчанию), а также добавляет поддержку декларативной проверки через @Valid и тела сообщения сортировка с @RequestBody / ResponseBody.

36 голосов
/ 03 декабря 2012

Существует также более подробная информация об использовании <mvc:annotation-driven /> в Spring docs . В двух словах, <mvc:annotation-driven /> дает вам больший контроль над внутренней работой Spring MVC. Вам не нужно использовать его, если вам не нужна одна или несколько функций, описанных в вышеупомянутом разделе документов.

Кроме того, существуют другие «управляемые аннотациями» теги для обеспечения дополнительной функциональности в других модулях Spring. Например, <transaction:annotation-driven /> позволяет использовать аннотацию @Transaction, <task:annotation-driven /> требуется для @Scheduled et al ...

7 голосов
/ 09 октября 2016

mvc: на основе аннотаций - это тег, добавленный в Spring 3.0, который выполняет следующие действия:

  1. Конфигурирует Spring 3 Type ConversionService (альтернатива PropertyEditors)
  2. Добавлена ​​поддержка форматирования числовых полей с помощью @ NumberFormat
  3. Добавлена ​​поддержка форматирования полей «Дата», «Календарь» и «Время Joda» с помощью @DateTimeFormat, если Joda Time находится в пути к классам
  4. Добавлена ​​поддержка проверки@Controller вводит с помощью @Valid, если поставщик JSR-303 находится в пути к классам
  5. Добавляет поддержку поддержки чтения и записи XML, если JAXB находится в пути к классам (преобразование сообщений HTTP с помощью @ RequestBody / @ ResponseBody)
  6. Добавлена ​​поддержка чтения и записи JSON, если Джексон находится на пути к классам (по тем же строкам, что и # 5)

context: annotation-config Looksдля аннотаций на bean-компонентах в том же контексте приложения он определен и объявляется о поддержке всех общих аннотаций, таких как @Autowired, @Resource,@Required, @PostConstruct и т. Д. И т. Д.

...