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