hands on spring 2.5
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 2008TRANSCRIPT
Hands-onHands-on
Sergi Almar i Graupera ([email protected])Erick Camacho ([email protected])
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!!