В чем разница между и <контекст: Annotation-Config /> на сервлете?
-
09-10-2019 - |
Вопрос
Я мигрирую с весны 2,5 до весны 3.
Они ввели <mvc:annotation-driven />
который делает немного черной магии. Ожидается, что это будет объявлено только в файле конфигурации сервлета.
Весной 2.5 я только что использовал <context:annotation-config />
и <context:component-scan base='...'/>
Теги объявлены как в application-context.xml
И диспетчерская конфигурация сервлета XML с соответствующими базовыми пакетами для сканирования.
Так что мне интересно, в чем разница между mvc:annotation-driven
и context:annotation-config
Теги на конфигурации сервлета и что я могу устранить весной 3 файла конфигурации?
Решение
<context:annotation-config>
объявляет поддержку общих аннотаций, таких как @Required
, @Autowired
, @PostConstruct
, и так далее.
<mvc:annotation-driven />
объявляет явную поддержку контроллеров MVC с аннотацией (т.е. @RequestMapping
, @Controller
, хотя поддержка тем является поведение по умолчанию), а также добавление поддержки для декларативной проверки через @Valid
и кузов сообщений, маршаллинг с @RequestBody
/ResponseBody
.
Другие советы
Также есть еще подробнее об использовании <mvc:annotation-driven />
в Весенние документы. Отказ В двух словах, <mvc:annotation-driven />
Дает вам больший контроль над внутренней работой весны MVC. Вам не нужно использовать его, если вам не нужна одна или несколько функций, изложенных в вышеупомянутом разделе документов.
Кроме того, существуют и другие теги «ориентированные на аннотации» для предоставления дополнительных функциональных возможностей в других весенних модулях. Например, <transaction:annotation-driven />
позволяет использовать аннотацию @transaction, <task:annotation-driven />
требуется для @scheduled et al ...
MVC: аннотация Это тег, добавленный весной 3.0, который делает следующее:
- Настраивает преобразования типа пружины 3 типа (альтернатива имуществу)
- Добавляет поддержку полей формата форматирования с @nomberformat
- Добавляет поддержку даты форматирования, календаря и поля Joda с @dateTimeFormat, если время Joda находится на классе
- Добавляет поддержку для проверки входов @Controller с @Valid, если поставщик JSR-303 находится на классе
- Добавляет поддержку поддержки для чтения и записи XML, если JAXB находится в классе (преобразование HTTP-сообщений с @ request Codybody)
- Добавляет поддержку для чтения и записи JSON, если Jackson находится на классе (вдоль тех же строк, что и # 5)
Контекст: Annotation-ConfigИщете аннотации на бобах в том же контексте приложений, он определяется и объявляет поддержку всех общих аннотаций, таких как @OUTOWIED, @Resource, @required, @postconstruct etc и т. Д.