Sunucu uygulamasındaki <mvc: ek açıklamaya dayalı /> ve <içerik: ek açıklama yapılandırması /> arasındaki fark nedir?


155

İlkbahar 2,5'ten İlkbahar 3'e geçiyorum.

Onlar <mvc:annotation-driven />kara büyü yapan tanıttılar . Bunun yalnızca sunucu uygulaması yapılandırma dosyasında bildirilmesi bekleniyor.

İlkbahar 2.5'te yeni kullandım <context:annotation-config />ve taranacak uygun temel paketler ile <context:component-scan base='...'/>hem application-context.xmlsunucu hem de dağıtım programı sunucu uygulaması XML'de bildirilen etiketler kullandım .

Bu yüzden sunucu uygulaması içindeki etiketler mvc:annotation-drivenile context:annotation-configetiketler arasındaki farkın ne olduğunu merak ediyorum ve Spring 3 yapılandırma dosyalarında ne kaldırabilirim?

Yanıtlar:


150

<context:annotation-config>gibi genel ek açıklamalar verilen desteği ilan @Required, @Autowired, @PostConstruct, vb.

<mvc:annotation-driven />ek açıklama güdümlü MVC denetleyicileri için açık destek (yani @RequestMapping, @Controllerbunlar için destek varsayılan davranış olmasına rağmen) @Validve @RequestBody/ ile bildirici onaylama ve ileti gövdesi marshalling desteği ekler ResponseBody.


3
bağlam bildirmeliyim: özellikle bileşen tarama etiketinde farklı temel paketler kullanırsam, applicationContext ve sunucu uygulamasındaki ek açıklama-config?
glaz666

2
Evet, <context:annotation-config>her bağlamda ihtiyacınız olacak.
skaffman

61
@skaffman: <mvc:annotation-driven>anlamsız değil, sadece yanlış adlandırılmış. Aslında @Valid, ile bildirim doğrulaması , @RequestBody/ ile HTTP ileti dönüşümü @ResponseBody, yeni alan dönüştürme mimarisi
vb.Gibi

5
@Richards: Genellikle evet, bkz. Blog.springsource.com/2009/12/21/…
axtavt

7
Bu cevap mvc: ek açıklama güdümlü dönüşümler ve doğrulama için çok önemli olduğundan, yanlıştır. Burada tek doğru ve değerli şey @axtavt yorumudur.
Konrad Garus

36

Kullanımı ile ilgili biraz daha ayrıntı da vardır <mvc:annotation-driven />içinde Bahar docs . Özetle, <mvc:annotation-driven />Bahar MVC'nin iç işleri üzerinde daha fazla kontrol sağlar. Dokümanların yukarıda belirtilen bölümünde bir veya daha fazla özelliğe ihtiyaç duymadıkça kullanmanıza gerek yoktur.

Ayrıca, diğer Yay modüllerinde ek işlevsellik sağlamak için kullanılabilen "ek açıklama güdümlü" etiketler de vardır. Örneğin, @Transaction <transaction:annotation-driven />ek açıklamasının kullanılmasını sağlar, <task:annotation-driven />@Scheduled et al ...


Xml'de bu etikete benzer bir dizi ayar görmek istiyorum. Bir zamanlar bu örneğe uzun zaman önce rastladım ama tamamlanmadı AFAIR.
glaz666

7

mvc: ek açıklamaya dayalı , Bahar 3.0'da eklenen ve aşağıdakileri yapan bir etikettir:

  1. Spring 3 Tipi ConversionService'i yapılandırır (PropertyEditors'a alternatif)
  2. @NumberFormat ile Sayı alanlarının biçimlendirilmesi için destek ekler
  3. Joda Time sınıf yolundaysa, Date, Calendar ve Joda Time alanlarının @DateTimeFormat ile biçimlendirilmesi için destek ekler
  4. Sınıf yolunda bir JSR-303 Sağlayıcısı varsa @Controller girdilerini @Valid ile doğrulamak için destek ekler
  5. JAXB sınıf yolundaysa, XML okuma ve yazma desteği için destek ekler (@ RequestBody / @ ResponseBody ile HTTP ileti dönüşümü)
  6. Jackson sınıf yolundaysa (# 5 ile aynı satırlar boyunca) JSON okuma ve yazma desteği ekler

context: annotation-config Tanımlandığı uygulama bağlamında fasulye üzerindeki ek açıklamalara bakar ve @Autowired, @Resource, @Required, @PostConstruct vb. gibi tüm genel ek açıklamalar için destek beyan eder.


2
Kaynak ve mvc hakkında daha fazla bilgi: not-driver - spring.io/blog/2009/12/21/mvc-simplifications-in-spring-3-0
Aniket Thakur

Yani demek istediğim, @Autowired, @Resource, @Required, @PostConstruct VE gerekiyorsa @RequestBody, @ResponseBody- - tüm bu ek açıklamalar o zaman mvc:annotation-driven context:annotation-configbenim yapılandırma bu iki etiket eklemek gerekir ?
R Dhaval
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.