You are on page 1of 141

VIDEO 1 SPRING FRAMEWORK

Curso de Spring
-Framework Java
-Patrones de diseo DAO, FACTORY
-Spring es un orquestador de capa de servicio
-Spring framework que simplifica el desarrollo de JEE
-Permite habilitar/deshabilitar las caractersticas
VIDEO 2 INTRODUCCION A SPRING FRAMEWORK

-Spring Core, provee la funcionalidad bsica el componente principal es el


bean Factory el cual aplica el control de Inyeccin de Dependencia
-Spring AOP, permite aplicar programacin orientada a aspectos, incluye
clases para el manejo transaccional
-Spring ORM, permite integrar tecnologas como JPA, HIBERNATE, IBATIS y
otros framework
-Spring DAO, permite aplicar conceptos de la capa de datos DAO atreves de
pojos abstrayendo la complejidad y permitiendo crear un cdigo JDBC ms
limpio y simple.
-Spring Context, lugar donde se realiza la configuracin del framework
incluye la configuracin de servidores empresariales JNDI, EJB,
internacionalizacin, validacin entre varios conceptos ms.

-Spring Web, permite el desarrollo y la integracin de tecnologas struts, jsf,


trapestry entre otros framework web
Arquitectura multicapa
-Spring MVC, permite implementar el patrn MVC utilizando el framework de
spring adems incluye soporte para vistas web , jsp, velocity, freemarker, pdf,
Excel , xml/xls.

Portafoliio de spring
-Spring Web Flow, contruido sobre spring MVC con el objetivo de definir y
gestionar flujos entre paginas dentro de una aplicacin web
-Spring Web Services, permite facilitar la creacin de servicio web
-Spring Security, mdulo de seguridad para aplicaciones web, inicialmente
conocido como ACGI framework
-Spring Batch, permite crear procesos batch formado por una secuencia de
pasos bien definidos.
-Spring Social, permite conectividad con las redes sociales Facebook, twitter,
etc
-Spring Mobile, extencion de spring mvc con el objetivo de desarrollar
aplicaciones mviles
-Spring Roo, permite el desarrollo de aplicaciones rapidas en java

Ejercicios
1. Descargar el SpringSource Tool Suite (STS)
2. Hola mundo con Spring Framework

VIDEO 3 INSTALACION DE STS EJERCICIO


-La instalacin es todo siguiente y siguiente
-Segn la versin de jdk 32x o 64x descargar STS (Spring Tools Suite)

VIDEO 4 HOLA MUNDO


-Creando un hola mundo utilizando MAVEN

Actualizando repositorios de MAVEN

Esperar unos minutos mientras actualiza

Configurando el proyecto Spring

Modificar Exclude para no excluir ningn tipo de archivo, click en el botn


Remove. Esto con la finalidad de depositar cualquier archivo que no sea java
como ser xml, properties

Tambin se podra actualizar la ltima versin del JDK

Agregando las libreras de spring

Agregando dependencias

-Agregando el core de spring

-El archivo pom.xml descarga automticamente una versin del jar desde
MAVEN y los deposita en el repositorio local

-Verificamos que ya se descarg el jar

-Agregando el context support

-Agregando la librera para realizar pruebas unitarias.

-Al guardar el archivo Pom.xml automticamente en caso de que no exista la


librera MAVEN lo descarga

Creamos la clase Bean

Creando el archivo Aplication Context (Spring Bean Configuration File)


-El cual nos permitir configurar la fbrica de objetos spring.
-En el directorio resources se depositaran los archivos que NO sean java.

-Seleccionar el namespace beans para definir los bean del Spring.

-Al finalizar agregamos el siguiente cdigo


-Este cdigo se conoce como inyeccin de valores y se est utilizando la fbrica
de spring
-El archivo applicationContext buscara el bean e inyectar el valor setMensaje

Creando la clase BeanPrueba


-Ejecutando y mostrando el hola mundo

VIDEO 5 SPRING Y JEE


-Spring simplifica la complejidad de las aplicaciones JEE en java.
-Spring permite utilizar clases simples en java POJOS con el objetivo de
agregarle la misma funcionalidad que utiliza EJB (transaccionalidad, manejo de
login, manejo remoto de objetos entre otras caractersticas ms).

VIDEO 6 COHECION Y ACOPLAMIENTO


Cohesin
-La cohesin permite que un componente realice una sola tarea.
-En caso de que se necesite realizar otras tareas se puede apoyar de otros
componentes.
-Si el componente de impresin realizara todas las tares cualquier cambio o
modificacin sera ms difcil de realizar llevando mayor tiempo y costo en este
tipo de mantenimientos.
-Spring promueve el desarrollo de sistemas con alta cohesin aplicando
conceptos de inyeccin de dependencias y programacin orientada a aspectos.

Acoplamiento
-Los elementos de acoplamientos pueden ser mdulos, clases, desde el punto
de vista de desarrollo de software buscamos un bajo acoplamiento debido a
que entre menos relaciones existan entre los componentes ms sencillo ser
dar mantenimiento y reutilizar dichos componentes en otros sistemas, cuando
ms relaciones existen entre estos componentes ms difcil ser separarlos y
su dependencia ser ms fuerte.

-Es mejor tener menos relaciones entre los componentes


-No olvidar que una alta cohesin puede provocar un alto acoplamiento debido
a que un componente es pequeo (alta cohesion) necesita de ms elementos
para completar una tarea por lo tanto se incrementa el nmero de relaciones
entre dichos componentes esto genera en automtico un alto acoplamiento por
ello es necesario introducir el concepto de balance.
-El concepto de balance permite tener un equilibrio entre cohesin y
acoplamiento
-Spring promueve el desarrollo de sistema con una alta cohesin y bajo
acoplamiento aplicando concepto de inyeccin de dependencias y
programacin orientado a aspectos

Programacin Orientada a

Interfaces

-Con la programacin Orientada a Interfaces podemos cambiar la


implementacin de alguna clase de manera programtica a declarativa en
tiempo de ejecucin.
Ventajas
-El Bean de servicio no se ve afectado si se cambia la implementacin por
JDBC, HIBERNATE
-La implementacin puede utilizar fuentes datos reales o de pruebas
-Permite reducir la dependencia entre las clases, debido a que un bean de
servicio nunca se conecta a una implementacin se conecta a una interfaz, es
decir el bean de servicio no requiere conocer ninguna implementacin o
tecnologa que se est utilizando
-Spring promueve la programacin orientada a interfaces y as no utilizar
directamente clases concretas, esto se puede lograr ya sea de manera
declarativa por medio del descriptor.xml

o por medio de anotaciones las cuales utilizaremos ms adelante.

VIDEO 7 FABRICA DE SPRING


Contenedor de Spring

-La recuperacin del bean desde la fbrica de beans no se lo realizara


utilizando la palabra reservada NEW, esto porque se podr agregar
caractersticas como seguridad, transaccionalidad, etc. a los beans
recuperados atraves de la fbrica de spring.

Ciclo de vida de un bean en spring


-En el minuto 6:00 se explica mejor el ciclo de vida de un Beans en Spring y no
es necesario aprenderlo a detalle ya que muchas veces es suficiente con
declarar el Bean.

VIDEO 8 PROYECTO INTERPRETE V1

Creando Maven sin programacin orientado a interfaces

Configurando las propiedades del proyecto

Creando y explicando las clases java


-InterpreteEspanol.java

-Traductor.java

-PruebaInterprete.java

-Las setInterprete se conoce como inyeccin de referencias


-Las setNombre se conoce como inyeccin de valores

VIDEO 9 PROYECTO INTERPRETE V2


-Este proyecto se lo realizara con Spring.
-Ya no se utilizara la palabra NEW debido a que todas las clases sern obtenidos
a partir de la fbrica de Spring.

Creando una interfaz

Agregando archivo ApplicationContext

-En resumen el archivo applicationContext contiene la definicin de los


beans y la forma en la que se inyecta la dependencia cuando se trabaja con
spring.
-En el applicationContext se configurara los beans y sus dependencias
respectivas.

-El siguiente cdigo muestra una inyeccin de dependencia sin Spring

Obteniendo los Beans desde la Fbrica de Beans

VIDEO 10 INYECCION DE DEPENDENCIAS CON SPRING

-Tradicional, en la programacin tradicional se instancia en el main las clases


que se necesiten utilizar y las otras clases instancian a otras as
sucesivamente.
-Inversin de Control, tiene un contenedor de Inyector de dependencias
(Fabrica de spring) es quien va a entregar todos los objetos ya configurados
con todos sus dependencias a la clase principal (main), es decir se utilizaran
las instancias que sean necesarias durante el momento en que sea necesario,
los beneficios es la separacin de mdulos y la forma en que se conectan
dichos mdulos esto permite minimizar la dependencia entre ellos

VIDEO 11 RELACIONES ENTRE CLASES

Resolviendo el anterior problema con Spring


-Existen dos conceptos Fbrica y Manejo de Interfaces para los servicios
-Primer paso, la fbrica o builder nos permite gestionar las dependencias que
se necesitan para instanciar por completo nuestras clases.
-Si la clase A necesita de un servicio no utilizara una clase directa, si no se
apoya del uso de interfaces

-La interfaz tendr una implementacin, en este caso la implementacin estar


configurado en la fbrica
-Finalmente el servicio A se lo inyecta a una clase concreta en tiempo de
ejecucin
-La inyeccin de una clase en tiempo de ejecucin permite realizar los
siguientes puntos de forma ms eficiente:
1. Desacoplar las dependencias, permitiendo cambiar en cualquier
momento la implementacin de los servicios, esto porque la clase A
nicamente tendr una referencia con el tipo interfaz pero nunca con la clase
concreta (Servicio A).
2. Se pueden probar de forma aislada cada clase sin utilizar las
dependencias
3. Eliminamos las responsabilidades de las clases de crear y localizar sus
dependencias.

Concepto de Fabrica de Spring o BeanFactory


-Spring no tiene un nico contenedor de Beans, si no que podemos seleccionar
entre varios y se clasifican en 2 grandes categoras.
-Con el concepto de anotaciones es posible reemplazar mucho del cdigo que
anteriormente se declaraba en el applicationContext.xml

VIDEO 12 FABRICA DE SPRING APPLICATION CONTEXT

Namespaces en Spring
-Un namespace en xml permite definir elementos identificables de manera
nica dentro de un xml

-Un namespace es parecido a un import de java


-Los namespace especifican caractersticas a utilizar como ser seguridad,
manejo transaccional, concepto de auto inyeccin de beans etc.

VIDEO 13 CONCURSO DE TALENTOS V1 EJERCICIO

Configurando el proyecto

Agregando Dependencia MAVEN

Agregando el archivo log4j (log4j=Log para java)

Configurando el log4j
-Este log es parecido a System.out.println
-Todos los mensajes de la aplicacin se mandaran a la consola
-Tambin se puede mandar esta informacin a un correo electrnico a una base
datos a un archivo entre otros tipos de appender.

Creando las clases del proyecto


Clase EjecucionException
-Clase para simular una excepcin

Craendo la interfaz Concursante

Creando la clase Malabarista

Agregando el archivo de configuracin de spring


(applicationContext.xml)

Creando la clase PruebaConcursoTalente

-Las lineas de INFO es porque se configuro log4j

Creando una prueba unitaria

VIDEO 14 TIPOS DE INYECCION DE DEPENDENCIAS

Cul es la mejor forma de inyectar la dependencia?


-Depende en que momento tengamos disponibles los objetos y/o en que
momentos se requieren que estn disponibles los valores de las dependencias
de nuestros objetos.
-La inyeccin por Setter es la ms utilizada

VIDEO 15 CONCURSO DE TALENTOS V2 EJERCICIO

Creando la interfaz poema


Creando la clase soneto
Creando la clase malabaristarecitador

VIDEO 16 CONCURSO DE TALENTOS V3 EJERCICIO


-Poniendo en prctica las inyeccin de dependencias por setters

Creando la interface Instrumento

Creando la clase piano


Creando la clase saxofn
Creando la clase Msico
Modificando las dependencias en el applicationContext.xml

VIDEO 17 ANOTACIONES CON SPRING


-Se revisara como minimizar el archivo de configuracin xml utilizando
anotaciones

Autowiring
-No ambigedad, solo se tiene un bean de cierto tipo en toda la aplicacin.
-Permite ahorrar cdigo en la definicin de las dependencias dentro del
applicationContext ya que de manera automtica tratara de inyectar las
dependencias segn los tipos de Autowiring.

-Utilizar @Autowired en servidores Tomcat


-Utilizar @Inject o @Resource si se utilizara un contenedor empresarial JEE

Autodiscovery

-Con lo siguiente se reduce la configuracin del archivo applicationContext.xml


a lo mnimo necesario.
-Toda la configuracin se lo podr tener en los archivos java por medio de
anotaciones.

VIDEO 18 TALENTOS V4 - EJERCICIO

Modificando el applicationContext.xml

-Se pueden combinar bean declarados explcitamente en el applicationContext


con Anotaciones

Modificando la clase MalabaristaRecitador


-El autowired detecatara los bean cuyo tipo correspondan con los argumentos
del constructor, sin embargo debido a que el valor primitivo no lo podemos
declarar se inyectara valores primitivos @Value (15)

Modificando la clase TestConcursoTalentos del Junit

VIDEO 19 PROGRAMACION ORIENTADA A ASPECTOS INTRODUCCION


-Ejemplo un seor entra y sale de un edificio cuyas puertas son automticas
-Las puertas tienen sensores que permiten abrirlas y cerrarlas dependiendo de
la actividad que detectan
-La POA nos permite configurar caractersticas que deben realizar nuestros
mdulos o componentes de software sin embargo varias de estas
caractersticas no es responsabilidad de componente realizarlas directamente.
-AOP nos permite agregar funcionalidad a uno o varios componentes de
manera no intrusiva, permitiendo funcionar con el sensor del ejemplo el cual
est pendiente de la tarea a realizar.
-AOP permite agregar nuevas funcionalidades como transacciones, seguridad,
login, etc.
-Los aspectos son como los sensores que estn al pendiente del momento en
que deben ejecutarse y as ayudar y complementar nuestros componentes de
manera no intrusiva es decir que cada uno tendr su cdigo por separado y
spring unir esta funcionalidad

-Muchas de las actividades son comunes a todas las actividades como el login,
transacciones, etc
-Lo ideal es que todos los componentes deben enfocarse a las tareas para los
que fueron creados y toda las caracteristicas como seguridad, transacciones,
etc pueden delegarse a otros componentes que conoceremos como aspectos.

-AOP nos ayudar a desacoplar la funcionalidad transversal es decir los aspectos


y asi evitar que los modulos de servicios sean los que administren las llamadas
a estos aspectos.
-AspectJ, es un framework para trabajar con programacion orientado a
aspectos en java
-En la imagen se tiene que los modulos de negocio son envueltos por los
modulos transaversales o aspectos(modulo de login, modulo de seguridad,
modulo de transacciones).
-La funcionalidad de los modulos transversales o aspectos se activaran cada
ves que lo requieran

-Se puede observar que el modulo de seguridad atraviesa los otros modulos de
negocio por eso se los conocen como funcionalidad transversal
-Spring permite convertir nuestras clases puras de java en clases tan robustas
como puedes ser las clases JavaBean esto sin la necesidad de un contenedor
empresarial.
-Los aspectos ofrecen una alternativa a la herencia y delegacion de codigo, con
AOP en lugar de agregar lineas de codigo a nuestras clases de negocio
simplemente utilizaremos archivos de configuracion de spring o anotaciones,
para convertir nuestras clases en aspectos o sensores.

-Un Advice es un proposito del aspecto en si mismo es decir la tarea que va a


ejecutar
-Los advice definen que tarea y cuando se debe ejecutar dicho aspecto
-Podemos definer cual es el metodo que se va ejecutar ante cierta actividad y
podemos especificar si se va a ejecutar antes o despues de esta actividad.
-Un pointcut permite apuntar hacia un joinpoint es decir definen en donde se
aplicara el advice
-Un joinpoint es la oportunidad de un advice para ser ejecutado, es un punto de
ejecucion de nuestro programa donde se puede aplicar un advice o aspecto
-La programacion orientada a aspectos surgio por que en la POO no podia
heredar de mas de una clase.
-Los modulos transversales o modulos de aspectos envuelven a todos los
componentes
-Un componente o modulo es equivalente a una clase java de negocio

VIDEO 20 ESQUEMA DE EJECUCION DE AOP


-Los advice se pueden ejecutar antes o despues de la logica del negocio

VIDEO 21 CONCEPTO DE POINTCUTS EN AOP

VIDEO 22 CONCURSO DE TALENTOS V5 EJERCICIO

VIDEO 23 AROUND, INTRODUCTIONS Y ANOTACIONES CON AOP

VIDEO 24 CONCURSO DE TALENTOS V6

VIDEO 25 CONCURSO DE TALENTOS V7

VIDEO 26 CONCURSO DE TALENTOS V8

-Cualquier pensamiento que tenga el voluntario podra adivinar el mago


utilizando AOP

VIDEO 27 INTRODUCCION A JDBC CON SPRING


-Spring agrego plantillas (Spring Jdbc) para simplificar procesos como abrir y
cerrar bases de datos para simplificar el manejo de conexin a base de datos,
mejor manejo de excepciones.
-Spring ofrece Integracion de persistencia hibernate, jpa, jdo, ibatis entre otros
removiendo la complejidad de integracion.
-Spring no es un ORM, solo simplifica el uso del api jdbc.

VIDEO 28 PLANTILLA CON SPRING JDBC

VIDEO 29 CONFIGURACIN GENERAL DE SPRING JDBC

VIDEO 30 CONFIGURACION DE DATOA SOURCE EN SPRING


-Datasource JNDI la ventaja es que todos los servidores permiten utilizar
tecnologa JNDI, esto permite configurar la conexin totalmente independiente
de nuestra aplicacin java, ya que por un lado se define el JNDI en el Servidor
Java.

VIDEO 31 METODOS CALLBACK EN SPRING

VIDEO 32 CONFIGURACION SPRING JDBC EJERCICIO


-Configurando las dependencias MAVEN

-Configurando un log4j

-Agregando los namespaces necesarios beans y jdbc

-Configurando el application context para la conexin a mysql

-Realizando UnitTest

VIDEO 33 CONSULTAS CON SPRING JDBC EJERCICIO

-Agregando la definicion de Autowire y Autodiscovering

-Agregando el JavaBean Persona Getters and Setters

-Agregando la clase RowMapper, permite agregar codigo de tipo callback por


cada registro de la base de datos se crea un objeto rowMapper

-Agregando la interface PersonaDao

-Agregando la clase PersonaDaoImpl

-Inyectando el dataSource

-La plantilla jdbcTemplate unicamente reconece inidices ?,?,?,?

-La plantilla nameParameterJdbcTemplate

-Creando la clase UnitTest TestPersonaDaoImple

VIDEO 34 CONSULTAS DE CAMPOS AISLADOS CON SPRING JDBC


EJERCICIO

VIDEO 35 USO DE ROWMAPPER CON SPRING JDBC - EJERCICIO

VIDEO 36 INSERCION CON SPRING JDBC - EJERCICIO

VIDEO 37 ACTUALIZACION CON SPRING JDBC EJERCICIO

VIDEO 38 ELIMINACION CON SPRING JDBC EJERCICIO

VIDEO 48 INTEGRACION SPRING Y HIBERNATE

Hibernate se encarga de manejar el SessionFactory y Spring el


TransactionManager

VIDEO 49 INTEGRACION STRUTS SPRING Y HIBERNATE TEORIA

VIDEO 50 INTEGRACION SPRING Y HIBERNATE EJERCICIO PARTE 1


-Es necesario sobreescribir en cada clase los mtodos HashCode y
Equeals
-HashCode
-Equals

VIDEO 51 INTEGRACION SPRING Y HIBERNATE EJERCICIO PARTE 2

VIDEO 52 INTEGRACION SPRING Y HIBERNATE EJERCICIO PARTE 3

VIDEO 53 INTEGRACION STRUTS SPRING Y HIBERNATE EJERCICIO


PARTE 1

VIDEO 54 INTEGRACION STRUTS SPRING Y HIBERNATE EJERCICIO


PARTE 2
VIDEO 55 INTEGRACION STRUTS SPRING Y HIBERNATE EJERCICIO
PARTE 3
VIDEO 56 INTEGRACION STRUTS SPRING Y HIBERNATE EJERCICIO
PARTE 4
VIDEO 57 INTEGRACION STRUTS SPRING Y HIBERNATE EJERCICIO
PARTE 5
VIDEO 58 INTEGRACION STRUTS SPRING Y HIBERNATE EJERCICIO
PARTE 6