0. Preparo el Dojo
JDK6
http://java.sun.com/javase/downloads/widget/jdk6.jsp
SpringSource Tool Suite
http://www.springsource.com/products/springsource-tool-suite-download
IDE basado en Eclipse
Integración con Spring
Integración con Maven
Configuración
Window -> Preferences -> Java -> Installed JREs
Configurar ruta de JDK6
Creo el proyecto
File -> New Project -> Maven Project
maven-archetype-quickstart
Trabajo con Maven
Gestiona el proyecto
Maneja el build
Maneja dependencias
Tiene plugins con otras herramientas
pom.xml
http://maven.apache.org
http://mvnrepository.com
User Story
Como ninja deseo poder asesinar a mi objetivo para cumplir mi misión
1. Programación tradicional
Creo una Mision
método main()
El Ninja debe asesinar a su Victima
Voy creando las clases y métodos conforme los necesito
Mision
Ninja
Victima
Shuriken
El Ninja obtiene y utiliza su Shuriken en cada asesinato
Ahora el Ninja debe aprender a utilizar una Katana
Antes de cambiar de técnicas fijemos un entrenamiento
JUnit para pruebas unitarias
<groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope>
Un Assert para comprobar el asesinato
No importa la forma, el Ninja debe cumplir su Mision: asesinar
Entrena a tu Ninja todo el tiempo, ejecuta los tests
Si tienes un error corrígelo inmediatamente
2. Programar contra la interface
El ninja es un experto utilizando cualquier Arma
GOF: Program to an interface, not an implementation
Objetos dependen de interfaces no de implementaciones
Reducir acoplamiento
3. Inversión de control
El Ninja ya no escoge su Arma
Ya no hace new
Quitamos esa responsabilidad al Ninja
Ya no depende del Arma concreta
Desconoce si usa Shuriken, Katana, Bo, etc
El Ninja permite que le entreguemos el Arma
Inyección de dependencias
Setter injection
Constructor injection
Alguien debe darle el Arma al Ninja
Spring IoC Container
pom.xml
<groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>3.0.2.RELEASE</version>
4. Configuración por XML
Creamos el Spring Bean Configuration
applicationContext.xml
Pasamos la configuración a XML
<bean>
id
identificador del bean
class
clase que implementa el bean
fully qualified name
property
name
nombre de la propiedad
estándar de JavaBeans
Constructor público sin argumentos
Acceso a propiedades mediante getter/setter
ref
inyectando referencias a beans
value
inyectando valores
Observaciones
Más explícita
Comenzar con XML para entender mejor los conceptos
Los beans son singletons por defecto
5. Configuración por anotaciones
Reduce configuración XML
Agregar el namespace "context"
Component autoscan
context:component-scan
@Component
@Controller
@Service
@Repository
Custom stereotypes
Autowiring
@Autowired
Autowiring por tipo
6. Sigue entrenando
Siguientes módulos
spring-webmvc
spring-jdbc
spring-aop
Participa en comunidades
http://javahispano.org
http://springhispano.org
http://springperu.org/
Referencia de Spring
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/
Libros
Expert One-On-One j2Ee Development Without Ejb
Professional Java Development with the Spring Framework
Spring in Action
Pro Spring 2.5
Acerca de
Topic
Topic