2012-05-03 6 views
14

Sono nuovo di quadro primavera .... durante la ricerca su google..I trovato alcuni esempi che ha @RequestMapping annotata a livello di classe e alcuni esempi che mostrano che a livello menthodqualcuno può spiegarmi la differenza tra controller di livello di classe e controller di livello del metodo ..?

Quando usare livello di classe e RequestMapping annotazione RequestMapping livello menthod ... qualcuno può spiegarmi la differenza tra RequestMapping di livello di classe e RequestMapping a livello di metodo .. ??

quindi sono po 'confuso circa la loro applicazione su:

a) livello di classe

Livello B) Metodo

Inoltre ho trovato un po' di @Requestmapping con il tipo: GET/Post , mentre alcuni esempi non hanno parametri di tipo.

Quale approccio è meglio .. ??

Le versioni più recenti (> Spring 2.5) non richiedono il tipo di parametro per la mappatura delle richieste ???

risposta

16

Un controller deve essere contrassegnato come @Controller a livello di classe. L'annotazione @RequestMapping può essere applicata a livello di classe e metodo. Se lo è, le annotazioni sui metodi verranno interpretate come URL relativi (relativi all'URL a livello di classe). Tuttavia, devono essere presenti annotazioni a livello di metodo, altrimenti il ​​metodo non verrà mappato.

Nelle annotazioni, i parametri possono essere contrassegnati come facoltativi con i valori predefiniti. Il parametro metodo è un caso simile: per impostazione predefinita è GET, ma può essere impostato in modo esplicito su POST o altro.

See:

+0

Patrick Floyed: Grazie per informazioni così preziose !! – JOHND

+0

Se potessi spiegarmi "Se lo è, le annotazioni sui metodi verranno interpretate come URL relativi (relativi all'URL di livello di classe) .Tuttavia, le annotazioni a livello di metodo devono essere presenti, altrimenti il ​​metodo non verrà mappato." , ti sarò grato! – JOHND

+11

Se il metodo è mappato su foo/bar che foo/bar è l'indirizzo. Ma se la classe è mappata su baz e il metodo è mappato su foo/bar, l'indirizzo del metodo è baz/foo/bar –

-1

per rispondere alla tua ultima domanda vale a dire che uno è meglio, direi che nella produzione utilizziamo combinazione di questi due. Per esempio, se c'è un controller utente si mappa la classe a "/ utente" e le modalità per dire getSettings() mapperà a "/ impostazioni", e il metodo per getPermissions() mapperà a "/ permessi" ecc

Puoi mappare questi metodi direttamente su "/ user/settings" e "/ user/permissions" e saltare la mappatura delle classi. Ma per lo più preferiamo il primo approccio.

Problemi correlati