Вы находитесь на странице: 1из 9

SPRING MVC

FRAMEWORK

Qu es Spring?
Spring es un framework de aplicaciones Java/J2EE desarrollado
usando licencia de OpenSource. Se basa en una configuracin a base
de javabeans bastante simple. Es potente en cuanto a la gestin del
ciclo de vida de los componentes y fcilmente ampliable. Es
interesante el uso de programacin orientada a aspectos (IoC). Tiene
plantillas que permiten un ms fcil uso de Hibernate, iBatis, JDBC...,
se integra "de fbrica" con Quartz, Velocity, Freemarker, Struts,
Webwork2 y tienen un plugin para eclipse. Ofrece un ligero
contenedor de bean para los objetos de la capa de negocio, DAOs y
repositorio de Datasources JDBC y sesiones Hibernate.
Mediante un xml definimos el contexto de la aplicacin siendo una
potente herramienta para manejar objetos Songleton o factorias
que necesitan su propia configuracin. El objetivo de Spring es no ser
intrusito, aquellas aplicaciones configuradas para usar beans
mediante Spring no necesitan depender de interfaces o clases de
Spring, pero obtienen su configuracin a travs de las propiedades de
sus beans. Este concepto puede ser aplicado a cualquier entorno,
desde una aplicacin J2EE a un applet.
Como ejemplo podemos pensar en conexiones a base de datos o de
persistencia de
datos, como Hibernate, la gestin de transacciones genrica de
Spring para DAOs
es muy interesante.
La meta a conseguir es separar los accesos a datos y los aspectos
relacionados con
las transacciones, para permitir objetos de la capa de negocio
reutilizables que no dependan de ninguna estrategia de acceso a
datos o transacciones. Spring ofrece una manera simple de
implementar DAOs basados en Hibernate sin necesidad de manejar
instancias de sesion de Hibernate o participar en transacciones. No
necesita bloques try-catch, innecesario para el chequeo de
transacciones. Podramos conseguir un mtodo de acceso simple a
Hibernate con una sola lnea.

Que proporciona?
Spring proporciona:

Una potente gestin de configuracin basada en JavaBeans,


aplicando los principios de Inversin de Control (IoC). Esto hace
que la configuracin de aplicaciones sea rpida y sencilla. Ya no
es necesario tener singletons ni ficheros de configuracin, una
aproximacin consistente y elegante. Estas definiciones de
beans se realizan en lo que se llama el contexto de aplicacin.

Una capa genrica de abstraccin para la gestin de


transacciones, permitiendo gestores de transaccin aadibles
(pluggables), y haciendo sencilla la demarcacin de
transacciones sin tratarlas a bajo nivel. Se incluyen estrategias
genricas para JTA y un nico JDBC DataSource. En contraste
con el JTA simple o EJB CMT, el soporte de transacciones de
Spring no est atado a entornos J2EE.

Una capa de abstraccin JDBC que ofrece una significativa


jerarqua de excepciones (evitando la necesidad de obtener de
SQLException los cdigos que cada gestor de base de datos
asigna a los errores), simplifica el manejo de errores, y reduce
considerablemente la cantidad de cdigo necesario.

Integracin con Hibernate, JDO e iBatis SQL Maps en trminos


de soporte a implementaciones DAO y estrategias con
transacciones. Especial soporte a Hibernate aadiendo
convenientes caractersticas de IoC, y solucionando muchos de
los comunes problemas de integracin de Hibernate. Todo ello
cumpliendo con las transacciones genricas de Spring y la
jerarqua de excepciones DAO.

Funcionalidad AOP, totalmente integrada en la gestin de


configuracin de Spring. Se puede aplicar AOP a cualquier
objeto gestionado por Spring, aadiendo aspectos como gestin
de transacciones declarativa. Con Spring se puede tener
gestin de transacciones declarativa sin EJB, incluso sin JTA, si
se utiliza una nica base de datos en un contenedor Web sin
soporte JTA.

Un framework MVC (Model-View-Controller), construido sobre el


ncleo de
Spring. Este framework es altamente configurable va interfaces
y permite el
uso de mltiples tecnologas para la capa vista como pueden
ser JSP, Velocity,
Tiles, iText o POI. De cualquier manera una capa modelo
realizada con Spring
puede ser fcilmente utilizada con una capa web basada en
cualquier otro
framework MVC, como Struts, WebWork o Tapestry.

Toda esta funcionalidad puede usarse en cualquier servidor J2EE, y la


mayora de
ella ni siquiera requiere su uso. El objetivo central de Spring es
permitir que objetos
de negocio y de acceso a datos sean reutilizables, no atados a
servicios J2EE
especficos. Estos objetos pueden ser reutilizados tanto en entornos
J2EE (Web o
EJB), aplicaciones standalone, entornos de pruebas, etc. sin
ningn problema.
La arquitectura en capas de Spring ofrece mucha de flexibilidad. Toda
la
funcionalidad est construida sobre los niveles inferiores. Por ejemplo
se puede
utilizar la gestin de configuracin basada en JavaBeans sin utilizar el
framework
MVC o el soporte AOP.

Arquitectura de Capas

Qu es Ioc?
Spring se basa en IoC. IoC es lo que nosotros conocemos como El
Principio de Inversin de Dependencia, Inversion of Control" (IoC) o
patrn Hollywood ("No nos llames, nosotros le llamaremos") consiste
en:

Un Contenedor que maneja objetos por ti.


El contenedor generalmente controla la creacin de estos
objetos. Por decirlo de alguna manera, el contenedor hace los
new de las clases java para que no los realices tu.
El contenedor resuelve dependencias entre los objetos que
contiene.
Estos puntos son suficientes y necesarios para poder hablar de
una definicin bsica de IoC. Spring proporciona un contenedor
que maneja todo lo que se hace con los objetos del IoC. Debido
a la naturaleza del IoC, el contenedor ms o menos ha definido
el ciclo de vida de los objetos. Y, finalmente, el contenedor
resuelve las dependencias entre los servicios que l controla.

Funcionamiento

Ciclo de vida de un Request.


1. Las peticiones pasan a travs de un servlet que acta de Front
Controller
(DispatcherServlet).
2. El DispatcherServlet consulta a un HandlerMapping para decidir a
que controlador le
pasa la peticin. Usa la URL de la solicitud para decidir.
3 - 4. El controlador procesa la peticin, accede a la lgica de
negocio y
potencialmente obtiene resultados (modelo, un Map) adems
selecciona la vista
para presentar el modelo.
Para que el controlador no est acoplado a la vista, se devuelve
un identificador lgico ( nombre) de vista.
Devuelve al DispatcherServlet un objeto que encapsula ambos:
ModelAndView.
5. El DispatcherServlet utiliza un ViewResolver para resolver el
nombre en una vista
concreta
Normalmente un JSP, pero se soportan otros Velocity, XSLT,
Tiles,
6. El DispatcherServlet utiliza la vista para mostrar el modelo al
usuario.

DispatcherServlet

Objeto de la clase DispatcherServlet del paquete


org.springframework.web.servlet.

Acta como un broker: despacha las peticiones que recibe al


controlador responsable de tratarlas.

Configurar el /WEB-INF/web.xml de la aplicacin para que el


dispatcher reciba las peticiones.

Lee su configuracin del fichero dispatcher-servlet.xml :

Ubicado en el /WEB-INF/ de la aplicacin


Referencia al HandlerMapping
Referencias a los controladores
Referencia al ViewResolver

HandlerMapping

Interfaz HandlerMapping del paquete


org.springframework.web.servlet
Spring proporciona varias implementaciones. Dos de las ms
utilizadas son:

Paquete: org.springframework.web.servlet.handler
BeanNameUrlHandlerMapping
- Seleccin por nombre del bean (el nombre coincide con la URL
de invocacin). Es el HandlerMapping por defecto.
<bean name="/home.htm"
class="this.is.an.example.HomePageController"/>
SimpleUrlHandlerMapping
- Se define una tabla que asocia URLs a controladores.

Controller

Interfaz Controller del paquete


org.springframework.web.servlet.mvc
Mtodo principal:

ModelAndView handleRequest(HttpServletRequest
request,HttpServletResponse response) throws Exception;

Usualmente para implementar un controlador se extiende de la


clase abstracta AbstractController del mismo paquete.
Al controlador se le inyecta (si es necesario) la referencia al
bean que ofrece el servicio de la lgica de negocio.

ViewResolver

Interfaz ViewResolver del paquete


org.springframework.web.servlet
Mtodo:

View resolveViewName(String viewName, Locale locale) throws


Exception

Spring ofrece algunas implementaciones:

Paquete: org.springframework.web.servlet.view
ResourceBundleViewResolver
- Un fichero bundle contiene las definiciones de vista (mapeo
nombre de vista a
implementacin de vista). Por ejemplo, bundle
views_EN.properties:

nombre-vista.class =
org.springframework.web.servlet.view.JstlView
nombre-vista.url=/WEB-INF/views/en_GB/user/edit.jsp
UrlBasedViewResolver
- No mapeo: el nombre es directamente una referencia a la vista.
- No implementa soporte para localizacin.

View

Interfaz View del paquete org.springframework.web.servlet


Mtodos principales:

String getContentType() void render(Map model,


HttpServletRequest request,
HttpServletResponse response) throws Exception

Spring proporciona mltiples implementaciones de esta interfaz


- JstlView, VelocityView, TilesView, XsltView,

Вам также может понравиться