hands on spring 2.5

32
Hands-on Hands-on Sergi Almar i Graupera ([email protected]) Erick Camacho ([email protected])

Upload: erick-camacho

Post on 21-Jun-2015

3.123 views

Category:

Technology


7 download

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

Page 1: Hands on Spring 2.5

Hands-onHands-on

Sergi Almar i Graupera ([email protected])Erick Camacho ([email protected])

Page 2: Hands on Spring 2.5

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

Page 3: Hands on Spring 2.5

3 javaHispano 2008

Hands-on Spring 2.5

Java JDK 5 o superior

Eclipse 3.3 (Europa)

Herramientas

Page 4: Hands on Spring 2.5

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

Page 5: Hands on Spring 2.5

5 javaHispano 2008

Hands-on Spring 2.5

¿Qué es Spring? II

Diseño modular y extensible

Page 6: Hands on Spring 2.5

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

Page 7: Hands on Spring 2.5

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>

Page 8: Hands on Spring 2.5

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

Page 9: Hands on Spring 2.5

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

Page 10: Hands on Spring 2.5

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

Page 11: Hands on Spring 2.5

11 javaHispano 2008

Spring MVC: DispatcherServlet

Hands-on Spring 2.5

Page 12: Hands on Spring 2.5

12 javaHispano 2008

ApplicationContext

Hands-on Spring 2.5

Page 13: Hands on Spring 2.5

13 javaHispano 2008

Beans especiales

Hands-on Spring 2.5

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

Page 14: Hands on Spring 2.5

14 javaHispano 2008

Hands-on Spring 2.5

Jerarquia controladores

Page 15: Hands on Spring 2.5

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

Page 16: Hands on Spring 2.5

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

Page 17: Hands on Spring 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

Page 18: Hands on Spring 2.5

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

Page 19: Hands on Spring 2.5

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)

-

Page 20: Hands on Spring 2.5

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) {...}}

Page 21: Hands on Spring 2.5

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) {...}}

Page 22: Hands on Spring 2.5

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>

Page 23: Hands on Spring 2.5

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) {...}}

Page 24: Hands on Spring 2.5

24 javaHispano 2008

Hands-on Spring 2.5

Binding

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

Page 25: Hands on Spring 2.5

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

Page 26: Hands on Spring 2.5

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”; }}

Page 27: Hands on Spring 2.5

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)

Page 28: Hands on Spring 2.5

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

Page 29: Hands on Spring 2.5

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

Page 30: Hands on Spring 2.5

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”/>

Page 31: Hands on Spring 2.5

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

Page 32: Hands on Spring 2.5

32 javaHispano 2008

Hands-on Spring 2.5

GRACIAS!!