2012-05-03 15 views
14

Soy nuevo en Spring framework ... mientras busco en google ... encontré algunos ejemplos que tienen @RequestMapping anotado en el nivel de clase y algunos ejemplos que lo muestran en el nivel menthod¿Alguien puede explicarme la diferencia entre el controlador de nivel de clase y el controlador de nivel de método ...?

Cuándo usar el nivel de clase RequestMapping y menthod level RequestMapping annotation ... ¿Alguien puede explicarme la diferencia entre RequestMapping de nivel de clase y RequestMapping de nivel de método?

así que estoy poco confundido acerca de su aplicación en:

a) Nivel Clase

nivel b) Método

También he encontrado algunos @Requestmapping con el tipo: GET/POST , mientras que algunos ejemplos no tienen parámetro de tipo.

¿Qué enfoque es mejor ... ??

¿Las versiones más recientes (> Spring 2.5) no necesitan el tipo de parámetro para la asignación de solicitudes ???

Respuesta

16

Un controlador debe marcarse como @Controller en el nivel de clase. La anotación @RequestMapping se puede aplicar a nivel de clase y método. Si es así, las anotaciones de método se interpretarán como URL relativas (relativas a la URL de nivel de clase). Sin embargo, las anotaciones de nivel de método deben estar presentes; de lo contrario, el método no se correlacionará.

En las anotaciones, los parámetros se pueden marcar como opcionales con valores predeterminados. El parámetro de método es un caso así: se establece de manera predeterminada en GET, pero se puede establecer explícitamente en POST o en otra cosa.

Ver:

+0

Patrick Floyed: ¡Gracias por su valiosa información! – JOHND

+0

Si pudiera explicarme "Si lo es, las anotaciones de método se interpretarán como URL relativas (relativas a la URL de nivel de clase). Sin embargo, las anotaciones de nivel de método deben estar presentes; de lo contrario, el método no se correlacionará". ,Te estaré agradecido ! – JOHND

+11

Si el método está mapeado en foo/bar, foo/bar es la dirección. Pero si la clase está mapeada a baz y el método está mapeado a foo/bar, la dirección del método es baz/foo/bar –

-1

Para responder a su última pregunta, es decir cuál es mejor, yo diría que en la producción se utiliza la combinación de estos dos. Por ejemplo, si hay un controlador de usuario asignamos la clase a "/ usuario" y los métodos dicen que getSettings() se correlacionará con "/ settings", y el método getPermissions() se asignará a "/ permisos" etc.

Puede asigne estos métodos directamente a "/ user/settings" y "/ user/permissions", omitiendo el mapeo de clase. Pero sobre todo preferimos el primer enfoque.

Cuestiones relacionadas