hands on spring 2.5

Post on 21-Jun-2015

3.123 Views

Category:

Technology

7 Downloads

Preview:

Click to see full reader

DESCRIPTION

Taller sobre Spring 2.5 creado por Sergi Almar y Erick Camacho.Impartido en el Open Java Day, en Madrid en junio de 2008 y en la 2a reunión de SpringhHspano en México D.F. en octubre de 2008

TRANSCRIPT

Hands-onHands-on

Sergi Almar i Graupera (sergi.almar@javahispano.org)Erick Camacho (ecamacho@javahispano.org)

2 javaHispano 2008

Hands-on Spring 2.5

ContenidoIntroducción a SpringSpring en la capa de datos: Spring JPA Gestión de transaccionesSpring en la capa de serviciosSpring en la capa web: SpringMVC SpringSecurity

3 javaHispano 2008

Hands-on Spring 2.5

Java JDK 5 o superior

Eclipse 3.3 (Europa)

Herramientas

4 javaHispano 2008

Hands-on Spring 2.5

Es un contenedor ligero de inversión de control (IOC).

Contenedor de POJOs: BeanFactory y ApplicationContext

IOC: Inyección de dependencias

¿Qué es Spring?

Hands-on Spring 2.5

5 javaHispano 2008

Hands-on Spring 2.5

¿Qué es Spring? II

Diseño modular y extensible

6 javaHispano 2008

Hands-on Spring 2.5

¿Qué es Spring? III

Integración con otras tecnologías.

“Spring should not compete with good existing solutions, but should foster integration”.(Spring no debe competir con soluciones buenas existentes, sino buscar la integración)

misión de Spring

JDBCJPA

Hibernate

iBatis

TopLink

Quartz

Struts

JSF

WebServices

JTA

LDAP

7 javaHispano 2008

El application Context: La piedra de toque

Hands-on Spring 2.5

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="mibean" class="com.mipaquete.MiClase" />

</beans>

8 javaHispano 2008

Hands-on Spring 2.5

Anotaciones

- @Autowired @Qualifier- @Resource, @PostConstruct, @PostDestruct- @Configurable

<context:load-time-weaver aspectj-weaving="on"/>

- Stereotypes @Component (@Controller, @Service, @Repository...)

- @Transactional

9 javaHispano 2008

Hands-on Spring 2.5

Spring JPA

Integración transparente

Inyección del EntityManager gestionado por Spring

Nuevo en 2.5: @Repository

10 javaHispano 2008

Hands-on Spring 2.5

Spring Transacciones

Capa de abstracción para uniformizar el uso de transacciones con muchas tecnologías como JTA, JXTA, JDBC, etc.

Declarativa en el XML o mediante anotaciones

11 javaHispano 2008

Spring MVC: DispatcherServlet

Hands-on Spring 2.5

12 javaHispano 2008

ApplicationContext

Hands-on Spring 2.5

13 javaHispano 2008

Beans especiales

Hands-on Spring 2.5

- Controladores- HandlerMappings- View resolvers- LocaleResolver- ThemeResolver- MultipartFileResolver

14 javaHispano 2008

Hands-on Spring 2.5

Jerarquia controladores

15 javaHispano 2008

public class UsuarioController extends MultiActionController { public ModelAndView listar(HttpServletRequest req, HttpServletResponse res) {...} public ModelAndView buscar(HttpServletRequest req, HttpServletResponse res) {...} public ModelAndView mostrar(HttpServletRequest req, HttpServletResponse res) {...}}

Hands-on Spring 2.5

Ejemplo Spring 2.0

16 javaHispano 2008

Hands-on Spring 2.5

Spring MVC 2.5 simplifica la programación de Controladores

- Anotaciones- Convention-over-configuration

Spring MVC 2.5

17 javaHispano 2008

Hands-on Spring 2.5

- Nuevo model de controlador “multi-action” basado en POJO- Ya no es necesario extender de clases específicas del framework- Mapear URLs a métodos usando anotaciones

@Controller

18 javaHispano 2008

Hands-on Spring 2.5

@Controllerpublic class UsuarioController { @RequestMapping public void listar() {...} @RequestMapping public void buscar(SearchCriteria criteria, BindingResult result) {...} @RequestMapping public void mostrar(@RequestParam("id") Long id) {...}}

Ejemplo @Controller

19 javaHispano 2008

Hands-on Spring 2.5

@RequestMapping

- Mapea las peticiones

- Diferentes estratégias para mapear- Simple- Relativo al nombre del controlador- Externalizado- Basado en convención (recomendado)

-

20 javaHispano 2008

Hands-on Spring 2.5

@RequestMapping - Simple

@Controllerpublic class UsuarioController { @RequestMapping(“/usuario/listar”) public void listar() {...} @RequestMapping(“/usuario/buscar”) public void buscar(SearchCriteria criteria, BindingResult result) {...} @RequestMapping(“/usuario/mostrar”) public void mostrar(@RequestParam("id") Long id) {...}}

21 javaHispano 2008

Hands-on Spring 2.5

@RequestMapping – Relativo controlador

@Controller@RequestMapping(“/usuario/*”)public class UsuarioController { @RequestMapping public void listar() {...} @RequestMapping public void buscar(SearchCriteria criteria, BindingResult result) {...} @RequestMapping public void mostrar(@RequestParam("id") Long id) {...}}

22 javaHispano 2008

Hands-on Spring 2.5

@RequestMapping – Externalizado

@Controllerpublic class UsuarioController { @RequestMapping public void listar() {...} @RequestMapping public void buscar(SearchCriteria criteria, BindingResult result) {...} @RequestMapping public void mostrar(@RequestParam("id") Long id) {...}}

<bean class=“...SimpleUrlHandlerMapping”> <property name="mappings"> <value>

/usuario/*=usuarioController </value>

</property></bean>

23 javaHispano 2008

Hands-on Spring 2.5

@RequestMapping – Convención

<bean class=“...ControllerClassNameUrlHandlerMapping” />

@Controllerpublic class UsuarioController { @RequestMapping public void listar() {...} @RequestMapping public void buscar(SearchCriteria criteria, BindingResult result) {...} @RequestMapping public void mostrar(@RequestParam("id") Long id) {...}}

24 javaHispano 2008

Hands-on Spring 2.5

Binding

-Simple @RequestMapping public void mostrar(@RequestParam("id") Long id) {...}

25 javaHispano 2008

@RequestMappingpublic void foo(HttpServletRequest req, ...) {...}

@RequestMappingpublic void foo(HttpServletResponse res, ...) {...}

@RequestMappingpublic void foo(HttpSession session, ...) {...}

@RequestMappingpublic void foo(Locale locale, ...) {...}

@RequestMappingpublic void foo(Principal principal, ...) {...}

Hands-on Spring 2.5

Parámetros especiales

26 javaHispano 2008

Hands-on Spring 2.5

Seleccionar vistas

Dos técnicas:- Por convención

@Controllerpublic class UsuarioController { @RequestMapping public void listar() {...}}

- Nombre de vista en String@Controllerpublic class UsuarioController { @RequestMapping public String listar() { return “/usuario/listar”; }}

27 javaHispano 2008

Hands-on Spring 2.5

Exponer objectos del modelo

Dos técnicas:- Devolver un único objecto (no String; recomendado para casos

simples)- Declarar un Modelo y añadir parámetros (más flexible)

28 javaHispano 2008

Hands-on Spring 2.5

@RequestMappingpublic List<Usuario> buscar(SearchCriteria criteria) {...}

- El parámetro se expone en usuarioList -

@RequestMappingpublic @ModelAttribute(“usuarios”) List<Usuario> buscar(SearchCriteria criteria) {...}

Devolver un Objeto

29 javaHispano 2008

Hands-on Spring 2.5

@RequestMappingpublic void buscar(SearchCriteria criteria, Model model) {

List<Usuario> usuarios = usuarioServicice.getUsuarios(criteria);model.addObject(“usuarios”, usuarios);

}

Añadir al modelo

30 javaHispano 2008

Hands-on Spring 2.5

Exportar @ControllersDos técnicas:

- Definición del bean explícito <bean class=“...SimpleUrlHandlerMapping”>

<property name="mappings"> <value>

/usuario/*=usuarioController </value> </property>

</bean><bean id=“usuarioController” class=“...UsuarioController” />

- Classpath scanning <context:annotation-config />

<context:component-scan base-package=”com.mycompany.app”/>

31 javaHispano 2008

Form • JA-SIG CAS• Basic • JOSSO• JDBC • SiteMinder• LDAP • Atlassian Crowd• NTLM • OpenID• Containers • X.509• JAAS • Digest

Métodos de autenticación

Hands-on Spring 2.5

32 javaHispano 2008

Hands-on Spring 2.5

GRACIAS!!

top related