You are on page 1of 5

Handler Mapping BeanNameUrlHandlerMapping

Como mapea el Request Mapea controladores a URL basandose en el nombre del Bean Mapea controladores a URL basandose en una collecion de propiedades que se definen en el Spring application context. Mapea controladores a URL utilizando el Controller Class Name

SimpleUrlHandlerMapping

ControllerClassNameHandlerMapping CommonsPathMapHandlerMapping

Mapea controladores a URL usando metadatas en el codigo del controlador. Esta metadata es definida usando Jakarta Commons Atributes. Luego de que el Handler Mapping le entrega nombre del Controller que se hara cargo del Request , el DisLuego de que el Handler Mapping le entrega nombre del Controller que se hara cargo del Request , el Distpacher Servlet le envia el request al Controller.Para poder implementar un Controller sobre Spring es necesario que se cree una clase que herede de los Controller que han sido implementados por Spring, los cuales dependiendo de la funcionalidad a realizar es el Controller que se debera utilizar. En el siguiente cuadro se puede ver que tipos de Controller estan disponibles sobre Spring. Controller type View Simple Throwaway Multiaction Command Form Wizard Classes Usarlo cuando ...

ParameterizableViewController Para cuando un controlador solo necesita UrlFilenameViewController desplegar informacion Controller (interface) AbstractController ThrowawayController MultiActionController BaseCommandController AbstractCommandController AbstractFormController SimpleFormController AbstractWizardFormController Para controladores simples que solo se utilizan como Simples Servlet Para manejar los request como un Commando Para implementar una serie de acciones con similar logica Si tus controladores reciben parametros estos son manejados dentro de un objeto Para desplegar y procesar un formulario, bajo el mismo componente Para realizar una interaccion mas rica con el usuario a traves de varias pantallas

Luego que el Controller recibe el Request , se construye un Objeto que se denomina ModelAndView ,este componente tiene como funcion la de : 1- Entregar un nombre logica a la vista que debera realizar el despliegue del Model 2- Entregar un nombre logico al Model que esta asociado a este componente 3- Inyectar el objeto Model el cual tiene los datos que seran desplegados en la Vista. Luego que el objeto ModelAndView es regresado al dispatcher y este componente delega la responsabilidad de la mapping del nombre logico de la vista, con el componente a utilizar al ViewResolver.El ViewResolver es el encargado de realizar el mapping entre el nombre logico de la vista y el componente. En el siguiente cuadro se indican los ViewResolver disponibles a ser configurados sobre Spring. View Resolver InternalResourceViewResolver BeanNameViewResolver ResourceBundleViewResolver Como trabaja .... Resuelve el nombre logico utilizando el mapping a velocity y JSP Resuleve el nombre logico utilizando Bean definidos en el Spring Context Define el mapping entre los nombres logicos y las vistas

asociadas , definiendolo en un archivo de propiedades XmlViewResolver Define el mapping entre los nombres logicos y las vistas asociadas , definiendolo en un archivo XML

Luego que las vista realiza el procesamiento , el dispatcher envia el request de retorno al usuario. Para todos aquellos que solo conocian Struts , los invito a interiorizarse un poco mas sobre springframework. Es importante sealar que el MVC es solo un modulo dentro del framework de Spring.

@Anotaciones
Spring proporciona dos anotaciones para la inyeccin de dependencias: @Autowired y @Qualifier. @Autowired funciona por tipo, y es que ella sola se encarga de buscar un bean de la clase correspondiente (inyectamos el DAO que vamos a probar sin necesidad de declararlo en el xml). En definitiva para lo que sirve es para crear los objetos por ejemplo si tu lo pones encima de un private LectorDao lectorDao no tendr que hacer el new LectorDao() Spring se encarga de hacerlo por ti. 1 @Autowired 2 private ExampleService exampleService; La gran limitacin de esta anotacin es que no es posible hacer inyeccin por nombre (qu pasa si tenemos varios beans del mismo tipo?), por lo que la solucin pasa por complementarla con @Qualifier: 1 @Autowired 2 @Qualifier("exampleService") 3 private ExampleService exampleService; Mientras no llega la versin 3.0 de Spring, una alternativa menos verbosa sera usar la anotacin @Resource (perteneciente al JSR-250): Common Annotations for the Java Platform. Esta anotacin slo se puede usar en atributos y en mtodos setter. 1 @Resource(name="exampleService") 2 private ExampleService exampleService; Si tuviramos mas de una implementacin, puede que Spring inyectara la que no queremos. En todo caso, si queremos estar 100% seguros, siempre podemos sustituir @Autowired por @Resource(name=PlayerDao) para indicar exactamente que componente queremos inyectar. @Component es el estereotipo principal, indica que la clase anotada es un component (o un Bean de Spring). @Repository, @Service y @Controller son especializaciones de @Component para casos concretos (persistencia, servicios y presentacin). Esto significa que puede usarse siempre @Component pero lo adecuado es usar estos estereotipos ya que algunas herramientas o futuras versiones de Spring pueden aadir semntica adicional. @Controller, que indica que dicha clase es un controller. @Controller es capaz de manejar

peticiones web. Debido a que @Controller es una especializacin de la anotacin de estereotipo @Component , esta clase ser automticamente detectada por el contenedor de Spring como parte del proceso de escaneado de componentes del contenedor, creando una definicin de bean y permitiendo a la instancias a ser inyectadas con dependencia como si el bean hubiera sido definido en el XML de Spring. @Repository es una anotacin de Spring que indica que la presente clase es un DAO. Cuando usamos @Repository, el contenedor de Spring sabe cmo inyectar el EntityManager sin que tengamos que decirle nada explcitamente. Estamos indicando que esta es una clase relacionada con la capa de persistencia, y que debe ser un Singleton. @Service Anotacin de Spring que indica que la presente clase es un servicio de la clase de negocio. @RequestMapping Mapea las peticiones. Las diferentes estrategias para mapear son: Simple

Relativo al nombre del controlador

Externalizado

Basado en convencin (recomendado)

@ Deprecated: esta anotacin indica que el elemento marcado es obsoleto y ya no debe ser utilizado. @ Override esta anotacin informa al compilador que el elemento est destinado a reemplazar un elemento declarado en una superclase (mtodos primordiales sern discutidos en la leccin el ttulo "Interfaces y Herencia"). @ SuppressWarnings Esta anotacin se utiliza para evitar un error en tiempo de compilacin al implementar la interfaz java.io. (rawtypes es para suprimir las advertencias relativas al uso de tipos de primas raw types) @ContextConfiguration permite decir dnde estn los ficheros de configuracin de Spring @Entity: indica que la clase en una entidad

@Table: indica que tabla estamos mapeando en la clase @Id: indica la propiedad que acta como identificador @Column: indica contra que columna de la tabla se mapea una propiedad Las anotaciones que aparecern en cada una de las capas son: Presentacin: @ManagedBean y @SessionScoped Negocio: @Service, @Autowired y @Transactional DAO's: @Repository, @Autowired Pojos: @Entity, @Table, @Id, @Column

You might also like