2012-05-03 15 views
14

ben .... bahar çerçevesinde yeni ambana sınıf seviyesi kontrolörü ile seviye kontrolörü arasındaki farkı açıklayan var mı? google..I arama menthod düzeyinde göstermekten sınıf düzeyinde ek açıklama eklenmiş @ RequestMapping olan birkaç örnek ve birkaç örnek buldum iken

sınıf seviyesi RequestMapping ne zaman kullanılır ve Metodu seviyesinde RequestMapping notu… herhangi biri sınıf seviyesi RequestMapping ve method level RequestMapping arasındaki farkı bana açıklayabilir mi .. ??

a) Sınıf seviyesi

b) Yöntem seviyesi

Ayrıca

Ben türüyle bazı @Requestmapping bulundu: GET/mesaj

yüzden onların uygulama hakkında biraz karıştı Bazı örneklerde tip parametresi yoktur.

Hangi yaklaşım daha iyidir ..?

Daha yeni sürümler (> İlkbahar 2.5) istek eşlemesi için parametre türüne sahip değil midir ???

cevap

16

Bir denetleyici, sınıf düzeyinde @Controller olarak işaretlenmelidir. @RequestMapping ek açıklaması hem sınıf hem de yöntem düzeyinde uygulanabilir. Öyleyse, yöntem ek açıklamaları göreli URL'ler olarak (sınıf düzeyi URL'ye göre) yorumlanır. Ancak, yöntem düzeyi ek açıklamaları mevcut olmalıdır, aksi halde yöntem eşlenmez.

Açıklamalarda, parametreler varsayılan değerlerle isteğe bağlı olarak işaretlenebilir. Yöntem parametresi böyle bir durumdur: varsayılan olarak GET, ancak açıkça POST veya başka bir şekilde ayarlanabilir.

Bkz:

+0

Patrick Floyed: Bu değerli bilgiler için teşekkürler! – JOHND

+0

Bana açıklarsanız "Yöntem açıkları göreceli URL'ler olarak (sınıf düzeyi URL'ye göre) yorumlanır. Ancak, yöntem düzeyi ek açıklamaları mevcut olmalıdır, aksi halde yöntem eşlenmez." ,minnettar olurum ! – JOHND

+11

Yöntem foo/bar ile foo/bar olarak eşlenirse adres budur. Ama eğer sınıf baz ile eşlenirse ve metot foo/bar ile eşleştirilirse metodun adresinden baz/foo/bar –

-1

iyidir hangisinin, ben bu ikisinin kombinasyonunu kullanabilirsiniz üretiminde söyleyebilirim yani son soruya cevap vermek için. Örneğin, bir kullanıcı denetleyicisi varsa, sınıfı "/ user" ile eşleriz ve getSettings() için yöntemler "/ settings" ile eşleşecek ve getPermissions() için yöntem "/ permissions" vb. Ile eşlenecektir.

Bu yöntemleri doğrudan sınıf eşlemesini atlayarak "/ user/settings" ve "/ user/permissions" ile eşleştirin. Ama çoğunlukla ilk yaklaşımı tercih ederiz.

İlgili konular