Какая разница между <mvc: annotation-driven/ "> и <context: annotation-config/" > в сервлет?

Я перехожу от Spring от 2,5 до Spring 3.

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

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

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

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

  • Настраивает Spring 3 Type ConversionService (альтернативу PropertyEditors)
  • Добавляет поддержку форматирования полей чисел с @NumberFormat
  • Добавляет поддержку форматирования полей Date, Calendar и Joda Time с @DateTimeFormat, если Joda Time находится в пути к классам
  • Добавляет поддержку для проверки входов @Controller с @Valid, если поставщик JSR-303 находится в пути к классам
  • Добавляет поддержку для поддержки чтения и записи XML, если JAXB находится в пути к классам (преобразование HTTP-сообщений с помощью @RequestBody/@ResponseBody)
  • Добавляет поддержку для чтения и записи JSON, если Джексон - это путь к классу (по тем же строкам, что и # 5)

контекст: аннотация-конфигурация Ищет аннотации на beans в том же контексте приложения, который определен и объявляет поддержку для всех общих аннотаций, таких как @Autowired, @Resource, @Required, @PostConstruct и т.д.