El libro consta de los siguientes capítulos:
- Pasar a la acción: Se presenta Spring y los módulos que lo componen. Se introducen los conceptos principales de Spring, la inyección de dependencias y la programación orientada a aspectos.
- Conexión básica de beans: Se presentan los distintos tipos de contenedores de beans, las fábricas de bean y los contextos de aplicación. A continuación se ve cómo crear beans en un contenedor y cómo inyectar valores y propiedades en ellos mediante inyección de dependencias. Después se muestra qué es la autoconexión de beans y, por último, se explica cómo controlar la creación de beans a través de métodos de inicio y destrucción del bean.
- Conexión avanzada de beans: Se muestran conceptos avanzados del contenedor de beans de Spring. Primero se ve cómo declarar beans padre de los que otros beans hijos pueden heredar propiedades. Después se enseña la inyección de métodos. Luego se pasa a la inyección de beans que no han sido creados dentro del contenedor de Spring. También se ve cómo registrar editores de propiedades y cómo trabajar con beans especiales de Spring que se integran en el ciclo de vida de otros bean. Por último, se ve cómo crear beans con lenguajes dinámicos como Ruby, Groovy o Beanshell.
- Notificaciones a beans: En primer lugar, se hace una introducción a la programación orientada a aspectos (AOP). Posteriormente se explica cómo crear aspectos clásicos de Spring y qué es el autoproxying. Después se ve la declaración de aspectos POJO y cómo se pueden inyectar aspectos creados con AspectJ.
- Peticiones a la base de datos: Se examinan las capacidades de acceso a base de datos que ofrece Spring, y su fillosofía de acceso a datos a través de plantillas. Posteriormente se ve cómo se puede integrar Spring con JDBC puro o con ORMs como Hibernate, JPA o iBatis. Por último, se muestran las capacidades de cacheo en Spring.
- Gestión de transacciones: Se revisa la gestión de transacciones en Spring, comenzando por una explicación de sus conceptos fundamentales. Después se enumeran los distintos gestores de transacciones disponibles y se explica cómo manejar las transacciones en Spring, tanto de forma programática como de forma declarativa
- Seguridad en Spring: Se hace una introducción a la seguridad en Spring, que se implementa mediante la antigua librería Acegi Security. Posteriormente vamos viendo cómo se autentican los usuarios y se controla el acceso. Finalmente se ve cómo asegurar una aplicación web y cómo asegurar las invocaciones a métodos.
- Servicios remotos basados en Spring y POJO: Se ve cómo implementar y consumir servicios remotos en Spring mediante RMI, Hessian, Burlap, Spring HttpInvoker y Web Services.
- Construcción de servicios web contract-first en Spring: Comienza con una introducción a Spring-WS, un framework que permite construir servicios web a partir de un contrato definido en primer lugar. Después se ve cómo se manejan los mensajes de estos servicios mediante puntos finales de servicio y como juntar todo esto para la creación de un servicio. Para terminar, se ve cómo consumir servicios web usando Spring-WS.
- Mensajería Spring: Se explica qué es JMS y cómo se puede usar desde Spring. Después se explica cómo construir POJOS dirigidos por mensajes y, por último, cómo utilizar RPC basado en mensajes, en contraposición a los servicios remotos vistos en el capítulo 8.
- Spring y Enterprise Java Beans: Se muestra cómo conectarse a EJBs desde Spring. Después se ve cómo desarrollar EJBs que puedan aprovecharse de las capacidades de Spring. Por último, se ve cómo utilizar anotaciones EJB 3, a través del proyecto Pitchfork, para realizar inyección de dependencia y AOP en Spring.
- Acceso a servicios empresariales: En este capítulo se estudia el uso en Spring de capacidades empresariales como JNDI, correo electrónico JMS, planificación de tareas y gestión de beans mediante JMX.
- Manejo de peticiones Web: Se introduce el marco MVC de Spring para la capa web, en el que las peticiones son manejadas por controladores. Se ve cómo mapear las peticiones a los controladores de la aplicación y los distintos tipos de controladores que se pueden utilizar. También se ve cómo se manejan las excepciones que se pueden producir durante el procesamiento de estos controladores.
- Mostrar vistas Web: Se ve cómo Spring MVC resuelve la vista que debe mostrar como respuesta a una petición. Se examinan las diferentes posibilidades, como JSP, con o sin Tiles, y otras alternativas a JSP, como Velocity y Freemarker. También se ve cómo es posible generar salida no-HTML, como documentos de Excel o PDFs.
- Spring Web Flow: Se explica qué es Spring Web Flow, un marco de trabajo que permite definer el flujo de navegación de una aplicación. Se ve cómo se puede definir el flujo de la aplicación desde los conceptos básicos hasta técnicas más avanzadas. También se ve cómo se puede integrar Spring Web Flow con otros frameworks web como Struts o JSF.
- Integración con otros marcos de trabajo Web: Se explica cómo se pueden utilizar las capacidades empresariales de Spring junto con otros conocidos frameworks web como Struts, WebWork/Struts2, Tapestry, JSF y aplicaciones Ajax con DWR.
Este libro es sencillo de leer y te va introduciendo paulatinamente dentro de Spring, explicando los conceptos principales y utilizando gran parte de sus funcionalidades. A mí me ha servido para aprender Spring desde cero, así como para entender la inyección de dependencias y la programación orientada a aspectos.
(ACTUALIZACION 26/10/2011: Ya está disponible la tercera versión de este libro, actualizada a Spring 3.)