Какая разница между <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 и т.д.