Cómo utilizar Spring 3 para crear servicios web RESTful
Con la arquitectura de estilo REST, las solicitudes y respuestas se construyen en base a la transferencia de representaciones de recursos. Los recursos se identifican mediante ID globales, que generalmente utilizan un identificador uniforme de recursos (URI). Las aplicaciones cliente utilizan métodos HTTP (como GET, POST, PUT o DELETE) para operar en uno o más recursos. Normalmente, GET se usa para obtener o enumerar uno o más recursos, POST se usa para crear, PUT se usa para actualizar o reemplazar y DELETE se usa para eliminar recursos.
Por ejemplo, GET mons-logging
Cree una aplicación web en Eclipse y luego configure Tomcat 6 como su entorno de ejecución. Luego, debe configurar el archivo web.xml para activar Spring
WebApplicationContext. Este ejemplo divide la configuración del Spring Bean en dos archivos: rest-servlet.xml contiene la configuración relacionada con MVC/REST y rest-context.xml contiene la configuración de nivel de servicio (como los beans de fuente de datos). El Listado 1 muestra partes de la configuración de Spring en web.xml.
Listado 1. Active Spring WebApplicationContext en web.xml
El siguiente es un fragmento de referencia:
lt context-paramgt; > lt;param-namegt;contextConfigLocationlt;/param-namegt;
lt;param-valuegt
/WEB-INF/rest-context.xml
lt;/param-valuegt;
lt;/context-paramgt;
lt;!-- Este oyente cargará otro archivo de contexto de aplicación además de
rest-servlet.xml --gt;
lt;listenergt;
lt;listener-classgt
org.springframework.web.context. ContextLoaderListener
lt;/listener-classgt;
lt;/listenergt
lt;servletgt
lt;servlet-namegt; ; restlt;/servlet-namegt;
lt;servlet-classgt;
org.springframework.web.servlet.DispatcherServlet
lt;/servlet-classgt
lt;load-on-startupgt;1lt;/load-on-startupgt;
lt;/servletgt
lt;servlet-mappinggt;
lt;servlet-namegt;restlt;/servlet-namegt;
lt;url-patternngt;/service/*lt;/url-patternngt
lt;/servlet-mappinggt;
Cree la configuración relacionada con Spring MVC (Controlador, Vista, Resolución de vista) en el archivo rest-servlet.xml. El Listado 2 muestra las partes más importantes.
Listado 2. Cree la configuración de Spring MVC en el archivo rest-servlet.xml
El siguiente es el fragmento de referencia:
lt contexto: componente-scan base; - package="dw.spring3.rest.controller" /gt;
lt;!--Para habilitar el proceso @RequestMapping a nivel de tipo y método--gt; ; bean class="org.springframework.web.servlet.mvc.annotation
.DefaultAnnotationHandlerMapping" /gt;
lt; mvc .annotation
.AnnotationMethodHandlerAdapter" /gt;
lt;!--Utilice el clasificador JAXB OXM para ordenar/desordenar la siguiente clase--gt;
lt ; bean id="jaxbMarshaller"
class="org.springframework.oxm.jaxb.Jaxb2Marshaller"gt;
lt nombre de propiedad="classesToBeBound"gt;
lt;listgt;
lt;valuegt;dw.spring3.rest.bean.Employeelt;/valuegt;
lt;valuegt;dw.spring3.rest.bean. Lista de empleados ;/valuegt;
lt;/listgt;
lt;/propertygt;/beangt; bean id="empleados" class=
"org.springframework.web.servlet.view.xml.MarshallingView"gt
lt; constructor-arg ref="jaxbMarshaller" / gt
lt;/beangt;
lt;bean id="viewResolver" class=
"org.springframework.web.servlet.view.BeanNameViewResolver " /gt;
En el código anterior:
Component-scan permite el escaneo automático de clases con anotaciones Spring. En la práctica, verificará lo que está definido en la clase del controlador. Anotación @Controller.
Spring procesa los beans DefaultAnnotationHanlderMappings y AnnotationMethodHandlerAdapter de clases o funciones anotadas con @ReqeustMapping. Esta anotación se describirá en detalle en la siguiente sección.
Jaxb2Mashaller define un marshaller y unmarshaller (unmarshaller) para el mapeo XML de objetos (OXM) usando JAXB 2
MashallingView define una vista de representación XML usando Jaxb2Mashaller
BeanNameViewResolver define un solucionador de vistas que utiliza un nombre de bean especificado por el usuario
Este ejemplo utilizará un MarshallingView llamado "empleados".
Esto completa la configuración relevante de Spring. El siguiente paso es escribir un controlador para manejar las solicitudes de los usuarios. El Listado 3 muestra la clase de controlador.