Jaka jest różnica między i w servlet?

Przenoszę się z wiosny 2.5 na wiosnę 3.

Wprowadzili <mvc:annotation-driven />, która wprowadza czarną magię. Oczekuje się, że zostanie to zadeklarowane tylko w pliku konfiguracyjnym servleta.

W Spring 2.5 użyłem właśnie znaczników <context:annotation-config /> i <context:component-scan base='...'/> zadeklarowanych zarówno w application-context.xml jak i dispatcher servlet configuration XML z odpowiednimi pakietami bazowymi do skanowania.

Więc zastanawiam się jaka jest różnica między tagami mvc:annotation-driven i context:annotation-config w konfiguracji servleta i co mogę wyeliminować w Spring 3 config files?

Author: informatik01, 2010-10-20

3 answers

<context:annotation-config> deklaruje wsparcie dla adnotacji ogólnych, takich jak @Required, @Autowired, @PostConstruct, i tak dalej.

<mvc:annotation-driven /> deklaruje jawne wsparcie dla sterowników MVC opartych na adnotacjach (np. @RequestMapping, @Controller, chociaż wsparcie dla nich jest domyślnym zachowaniem), a także dodanie wsparcia dla deklaratywnej walidacji za pomocą @Valid i message body z @RequestBody/ResponseBody.

 151
Author: skaffman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-17 09:35:01

Istnieje również więcej szczegółów na temat użycia <mvc:annotation-driven /> W Spring docs. W skrócie, <mvc:annotation-driven /> daje większą kontrolę nad wewnętrznym działaniem Spring MVC. Nie musisz go używać, chyba że potrzebujesz jednej lub więcej funkcji opisanych we wspomnianej sekcji dokumentów.

Dostępne są również inne znaczniki "oparte na adnotacji", które zapewniają dodatkową funkcjonalność w innych modułach Spring. Na przykład, <transaction:annotation-driven /> umożliwia użycie adnotacji @ Transaction, <task:annotation-driven /> jest wymagane dla @ Scheduled et al...

 36
Author: seanhodges,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-29 09:43:03

Mvc: annotation-driven jest tagiem dodanym wiosną 3.0, który wykonuje następujące czynności:

  1. konfiguruje ConversionService typu Spring 3 (alternatywa dla PropertyEditors)
  2. dodaje obsługę formatowania pól liczbowych za pomocą @NumberFormat
  3. dodaje obsługę formatowania pól daty, kalendarza i czasu Joda za pomocą @DateTimeFormat, jeśli czas Joda jest na classpath
  4. dodaje obsługę walidacji wejść kontrolera @za pomocą @Valid, jeśli dostawca JSR - 303 jest na classpath
  5. dodaje wsparcie dla odczytu i zapisu XML, jeśli JAXB jest na classpath (Konwersja wiadomości HTTP z @ RequestBody/ @ ResponseBody)
  6. dodaje wsparcie dla czytania i pisania JSON, jeśli Jackson jest o n classpath (w tych samych liniach co #5)

Context:annotation-config Szuka adnotacji na fasolach w tym samym kontekście aplikacji, który jest zdefiniowany i deklaruje wsparcie dla wszystkich ogólnych adnotacji, takich jak @Autowired, @ Resource, @Required, @PostConstruct etc etc.

 7
Author: Praveen Kumar K S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-09 09:36:04