Sie sind auf Seite 1von 27

Experiencia y Conocimiento para tu Vida

Este curso est dirigido a gente interesada en el desarrollo de aplicaciones


JEE con Spring. Este framework permite agilizar y simplificar en gran medida
el desarrollo de aplicaciones JEE.
Estudiaremos desde los fundamentos hasta conceptos ms avanzados del
framework Java ms utilizado en los ltimos aos para aplicaciones
empresariales.
Al final de este curso crearemos un proyecto, el cual utiliza las mejores
prcticas de desarrollo en 3 capas, incluyendo patrones de diseo como son
MVC, DAO, Factory, DTO, entre otros. Este proyecto puede usarse como la
base para el desarrollo de proyectos empresariales propios utilizando el
framework de Spring como orquestador de la capa de servicio.
Por medio de ejemplos prcticos revisaremos las caractersticas de este
framework, a su vez utilizaremos herramientas de desarrollo que nos
permitirn crear ms rpidamente nuestras aplicaciones Java con Spring, as
como la integracin con otros frameworks.
1 Todos los Derechos Reservados Global Mentoring 2011
Curso de Spring Framework
Experiencia y Conocimiento para tu Vida
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011
2
Experiencia y Conocimiento para tu Vida
Spring es el framework Java utilizado por excelencia para el desarrollo
de aplicaciones empresariales. Es uno de los frameworks ms utilizados
al da de hoy y no es casualidad. El objetivo de Spring es simplificar el
desarrollo de aplicaciones empresariales Java.
A grandes rasgos, un framework es un conjunto de clases que nos
permiten resolver un problema en especfico. En el caso particular de
Spring, nos permite resolver muchos de los problemas que se presentan
al desarrollar aplicaciones con tecnologa JEE (Java Enterprise Edition)
Una de las mayores ventajas de Spring, es la forma modular en el que
fue creado, permitiendo habilitar/deshabilitar las caractersticas a utilizar
segn se requiera.
La pgina oficial de Spring es www.springsource.org donde se pueden
encontrar todos los proyectos relacionados con dicha tecnologa.
Spring es utilizado en proyectos muy diversos, como puede ser en
Instituciones Bancarias, Aseguradoras, Instituciones Educativas y de
Gobierno, entre muchos otros tipos de proyectos y empresas.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 3
Experiencia y Conocimiento para tu Vida
Spring permite desarrollar aplicaciones flexibles, altamente cohesivas y con un
bajo acoplamiento.
Spring permiti simplificar el desarrollo JEE al utilizar clases Java Simples
(POJO Plain Old Java Object) para la configuracin de servicios.
Debido a que muchos proyectos muestran las mismas tareas a realizar una y
otra vez, tales como Localizacin de Servicios, Manejo de Transacciones,
Manejo de Excepciones, Parametrizacin de la aplicacin, entre muchos ms.
Spring permite resolver muchos de estos problemas de manera muy simple.
Para lograr lo anterior el framework se base en dos conceptos fundamental:
DI (Dependency Inyection): Este patrn de diseo permite suministrar
objetos a una clase (POJO) que tiene dependencias, en lugar de ser ella
misma sea quien los proporcione.
AOP (Aspect Oriented Programming): AOP es un paradigma de
programacin que permite modularizar las aplicaciones y mejorar la
separacin de responsabilidades entre mdulos y/o clases.
Las caractersticas anteriores son la base para la creacin de contenedores
ligeros (lightweight containers). Spring es uno de los contenedores ligeros ms
completos y populares al da de hoy.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 4
Experiencia y Conocimiento para tu Vida
Spring se compone de distintos mdulos, permitiendo seleccionar solo algunos de
ellos o todos, dependiendo de la naturaleza de la aplicacin. En la figura podemos
observar algunos de los mdulos principales del Framework de Spring. A
continuacin listaremos varios de ellos:
1. Spring Core: Este mdulo provee la funcionalidad bsica de la fbrica de Spring.
El componente principal es BeanFactory, el cual aplica el concepto de Inversion
of Control (IoC) o tambin conocido como Dependency Injection (DI).
2. Spring Context: Aqu es donde se realiza la configuracin del framework. Incluye
la configuracin de servicios empresariales tales como JNDI, EJB,
Internacionalizacin, validacin, entre varios ms.
3. Spring AOP: Permite aplicar los conceptos de Programacin Orientada a
Aspectos (AOP), adems incluye clases de soporte para el manejo transaccional,
la seguridad, entre varias clases ms, permitiendo desacoplar estas
caractersticas de nuestra aplicacin.
4. Spring DAO: Permite aplicar conceptos de la capa de datos Data Access Object
(DAO) a travs de POJOs (Plain Old Java Object), abstrayendo la complejidad,
permitiendo crear un cdigo JDBC ms limpio y simple.
5. Spring ORM: Permite integrarse con tecnologas tales como JPA, Hibernate,
entre otras.
6. Spring Web: Permite el desarrollo y la integracin con tecnologas como Struts,
JSF, Tapestry, entre otros.
7. Spring MVC: Este mdulo implementa el patrn MVC para ser utilizado en la
capa de presentacin.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 5
Experiencia y Conocimiento para tu Vida
Una aplicacin empresarial en Java se compone de distintas capas, cada capa tiene
una funcin muy especfica. Dividir una aplicacin en capas tiene varias ventajas,
como son separacin de responsabilidades, un mejor mantenimiento a la aplicacin,
especializacin de los programadores en cada capa, entre muchas ms.
Spring es un framework que resuelve varios problemas de distintas capas, desde la
capa de presentacin, la capa de negocio y la capa de datos. Aunque lo ms comn
es que se combine con otras tecnologas y Spring quede como el orquestador de la
capa de Servicio.
A continuacin mencionaremos cada una de las capas de una aplicacin multicapas.
Capa Web: La capa del Cliente es donde el cliente interacta por medio de un
navegador Web, un cliente mvil, una aplicacin de escritorio, entre otros.
Capa Web: la capa web que puede residir en un servidor web, las tecnologas
mas bsicas que podemos encontrar en este servidor web son los JSPs y los
Servlets.
Capa de Negocio: en esta capa podemos encontrar tecnologa como son los
Enterprise Java Beans (EJBs) o frameworks como Spring.
Capa de Datos: aqu vamos a encontrar tecnologas como JDBC, Hibernate, entre
otras. Este cdigo nos va a permitir comunicarnos con nuestra base de datos para
leer y almacenar informacin en ella.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 6
Experiencia y Conocimiento para tu Vida
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011
7
Experiencia y Conocimiento para tu Vida
La cohesin y el acoplamiento juegan un rol central en el diseo de software.
Al disear nuestros mdulos se requerirn cambios posteriores, por lo que su
diseo puede impactar de manera directa en el tiempo y costo asociado para
realizar dichos cambios.
La cohesin es la medida en la que un componente se dedica a realizar
solamente la tarea para la cual fue creado, delegando las tareas
complementarias a otros componentes.
El acoplamiento mide el grado de dependencia entre dos o ms elementos.
Estos elementos pueden ser mdulos, clases o cualquier componente de
software.
Hay que tomar en cuenta que una alta cohesin puede provocar un alto
acoplamiento, debido a que un componente que es pequeo (alta cohesin)
necesita de ms elementos para completar una tarea, por lo que se
incrementa el nmero de relaciones entre los componentes (alto
acoplamiento), por ello es necesario introducir el concepto de balance, el cual
permite tener un equilibrio entre los conceptos de cohesin y acoplamiento.
Spring por default promueve el desarrollo de sistemas con un bajo
acoplamiento y una alta cohesin, aplicando los conceptos de DI
(Dependency Injection) y AOP (Aspect Oriented Programming).
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 8
Experiencia y Conocimiento para tu Vida
Una patrn de diseo es una gua y que a su vez nos permite resolver un
problema que se presenta de manera repetitiva. Cuando hablamos de las
capas de una arquitectura JEE, cada capa puede tener varios patrones de
diseo como podemos observar en la figura.
En la capa de presentacin podemos observar el patrn MVC (Modelo Vista
Controlador), y su objetivo es dividir las responsabilidades en estos 3 rubros.
El patrn DTO (Data Transfer Object) representa un objeto del dominio del
problema. Este patrn aparece en las 3 capas debido a que se utiliza para
transferir una entidad o una lista de entidades de cierto tipo entre las distintas
capas de la aplicacin.
En la capa de Servicio o Negocio, tenemos el patrn Business Delegate el
cual se encarga de los detalles en la llamada a algn mtodo de servicio. A su
vez tenemos el patrn Service Locator, el cual es utilizado por el patrn
Business Delegate para localizar los servicios cuando se utiliza el directorio
Java JNDI.
En la capa de datos tenemos el patrn DAO, el cual nos ayuda a extraer y
almacenar informacin en la base de datos, utilizando los objetos DTO y/o de
entidad.
Existe un catlogo extenso de patrones de diseo para Java, el cual se puede
consultar en:
http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 9
Experiencia y Conocimiento para tu Vida
La programacin hacia interfaces significa que podemos cambiar la
implementacin de alguna clase de manera programtica o declarativa.
En la figura mostrada podemos observar un ejemplo involucrando la capa de
servicio y la capa de datos. En este ejemplo la capa de servicio utiliza dentro
del Bean de Servicio un tipo de la interfaz iDAO.
Posteriormente y en tiempo de ejecucin se debe inyectar una
implementacin de esta interfaz. En la figura podemos observar que se puede
inyectar una implementacin del DAO utilizando ya sea el framework de
Hibernate o de iBatis, aunque en la realidad puede ser cualquier tecnologa la
que implementa esta interfaz.
Los beneficios de utilizar tipos de Interfaz en lugar de clases concretas son
varios:
El bean de servicio no se ve afectado si se cambia la implementacin
La implementacin puede utilizar fuentes de datos reales o de prueba
Permite realizar pruebas unitarias ms fcilmente, en este caso sobre el
Bean de Servicio
Permite reducir la dependencia entre las clases, adems no se requiere
conocer el detalle de la implementacin, entre varios beneficios ms
El framework de Spring promueve el uso de la programacin orientada a
Interfaces y no usar directamente clases concretas. Esto se puede lograr ya
sea de manera declarativa por medio del descriptor xml de Spring o por medio
de anotaciones tambin de Spring.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 10
Experiencia y Conocimiento para tu Vida
El Contenedor de Spring es una fbrica de objetos. La idea principal es
administrar los objetos y sus dependencias aplicando el concepto de
Inyeccin de Dependencias. Adems, aplicando el concepto de AOP se puede
modificar un POJO en una clase mucho ms robusta, por ejemplo, en un
POJO transaccional, y todo esto sucede dentro del contenedor de Spring
Como podemos observar en la figura, Spring por medio de su fbrica se
encarga de instanciar los objetos que sean necesarios, de tal manera que se
crea un rbol de objetos.
La configuracin de estos objetos se realiza ya sea en el archivo descriptor de
Spring, comnmente llamado applicationContext.xml o por medio de
anotaciones de Spring.
En el ejemplo podemos observar que un Bean de la capa de Presentacin,
necesita utilizar un servicio de la Fbrica de Spring. A su vez la fbrica revisa
las dependencias del objeto solicitado e instancia cada uno de los objetos del
menos al ms dependiente (primero dataSource y luego daoHibernate).
En caso de que la fbrica ya tenga estos objetos, y dependiendo de cmo se
haya configurado, puede que ya no se vuelvan a instanciar, ya que por default
se aplica el patrn de diseo Singleton, el cual significa que nicamente existe
una instancia del Bean en memoria.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 11
Experiencia y Conocimiento para tu Vida
La configuracin de Spring puede realizarse por medio del descriptor xml
normalmente conocido como applicationContext.xml.
Una de las ventajas derivadas de utilizar el contenedor de Spring es que ya no
es necesario crear los objetos por nuestra cuenta, es decir, ya no
observaremos el operador new ClaseServicio() en nuestro cdigo.
Lo anterior permite crear cdigo ms limpio y delegar la configuracin de la
aplicacin a Spring.
Al crear y configurar las clases utilizando Spring permite escribir cdigo
modular, fcil de probar, integrando dependencias muy fcilmente y
promoviendo el uso de POJOs, pudindolos robustecer por medio de AOP.
En la figura podemos observar un ejemplo de configuracin de un Bean de
Spring dentro del archivo applicationContext.xml y por otro lado la obtencin
del mismo dentro de una clase Java.
Lo anterior es tan solo un ejemplo de lo que estaremos realizando en nuestros
ejercicios de configuracin con Spring, ya que existen muchas maneras de
configurarlo y de obtener los objetos a partir del contenedor de Spring.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 12
Experiencia y Conocimiento para tu Vida
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011
13
Experiencia y Conocimiento para tu Vida
Como podemos observar en la figura, en la programacin tradicional una
clase (Main) es la responsable de instanciar los objetos con los cuales tiene
dependencia, y a su vez cada objeto vuelve a ser responsable de instanciar
sus dependencias y completarlas. Este esquema lleva a configuraciones poco
flexibles y difciles de mantener.
En el esquema de Inversin de Control (IoC) podemos observar que la clase
Main recibe los objetos ya configurados, con todo y sus dependencias. El
contenedor logra completar estas dependencias a travs del Principio de
Hollywood: No me llames, yo te llamar.
Uno de los mayores beneficios de la inversin de control es la separacin de
mdulos y la forma en cmo se conectan dichos componentes. Esto permite
minimizar la dependencia entre ellos.
La inyeccin de dependencias (DI) es una forma de Inversin de Control. La
tarea del contenedor es inyectar las dependencias a cada objeto segn se
haya plasmado ya sea en el archivo de configuracin o por medio de
anotaciones Java.
En la figura el Inyector de Dependencias (contenedor) es el responsable de
revisar cada una de las dependencias y completar tareas que anteriormente
eran responsabilidad de la clase Main.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 14
Experiencia y Conocimiento para tu Vida
El problema planteado en la figura es que la Clase A tiene dependencias con 2
servicios. Cada Servicio a su vez debe ser instanciado y administrado por la
Clase A para poder ser utilizado.
Lo anterior nos lleva a los siguientes problemas:
Para reemplazar o actualizar las dependencias se debe cambiar el cdigo
de la Clase A
Las implementaciones concretas de los Servicios A y B depende estar
disponibles en tiempo de compilacin
Las clases son difciles de probar (Unit Test) debido a que tienen
dependencias directas. Lo que implica que los servicios no pueden
sustituirse por clases de tipo stub o mocks.
Las clases normalmente contienen cdigo repetido para crear, localizar y
gestionar sus dependencias.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 15
Experiencia y Conocimiento para tu Vida
En la figura podemos observar una configuracin general para la inyeccin de
dependencias. Existen dos nuevos conceptos, el primero es el concepto de la
Fbrica y el segundo es el manejo de interfaces para los servicios.
La Fabrica o Builder (1) nos permite gestionar las dependencias que se
necesitan para terminar de instanciar nuestras clases, en este caso la Clase A
necesita de una dependencia del Servicio A, el cual es proporcionada por la
fbrica (2).
Como se puede observar la Clase A no tiene una relacin directa con la clase
concreta (Servicio A) sino con una interfaz IServicio A (3).
Lo anterior nos permite lograr de manera ms eficiente los siguientes puntos:
Desacoplar las dependencias, permitiendo cambiar o actualizar en
cualquier momento la implementacin los servicios
Escribir clases que dependen de en otras clases cuya implementacin no
es conocida en tiempo de compilacin
Poder probar las clases de manera aislada, sin utilizar las dependencias
Eliminar la responsabilidad de las clases a crear y localizar las
dependencias
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 16
Experiencia y Conocimiento para tu Vida
Con el framework de Spring uno de los retos es aprender nuevamente a
instanciar y configurar nuestras clases, debido a que ya no obtenemos los
objetos por medio del operador new sino a travs del contenedor IoC.
Existen varias formas de realizar la inyeccin de dependencias en el
contenedor:
Por medio del constructor de la clase: Los valores y/o referencias de
Beans son inyectados a travs del constructor de la clase.
Por medio de los mtodos setters de las propiedades de una clase:
Una vez que el objeto es creado, los valores son asignados por medio del
mtodo set de la propiedad.
Por medio de interfaces. Este es el mtodo menos comn. Los
componentes a inyectar deben implementar una interface segn el tipo que
se necesite.
Cul es el mejor mtodo para inyectar dependencias? Esto depende de en
qu momento se tienen disponibles y/o en qu momento se requiere que
estn disponibles las dependencias. Cabe sealar que la inyeccin por setter
es la ms utilizada.
A su vez, la inyeccin de dependencias se puede configurar ya sea en el
archivo descriptor xml o por medio del uso de anotaciones de Spring.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 17
Experiencia y Conocimiento para tu Vida
Podemos observar en la figura la inyeccin de dependencias por Constructor.
En este caso la configuracin se realiza en el archivo descriptor de Spring
applicationContext.xml, aunque el nombre puede ser cualquier otro.
Posteriormente una vez que hemos definido nuestra clase (HibernateDao)
hemos definido un constructor con 2 argumentos.
El primer argumento es una variable que referencia a un objeto de tipo
DataSource. El segundo argumento es un tipo int primitivo.
En el contenedor de Spring podemos definir todos los beans que necesitemos
inyectar a su vez a otros beans. Esto generar un rbol de dependencia de
beans. En algunos IDEs como el SpringSource Tool Suite es posible observar
ese conjunto de relaciones de manera grfica analizando el archivo descriptor
de Spring.
La configuracin mostrada tiene como objetivo crear un objeto hibernateDao
cuando se le es requerido, y al momento de la construccin del objeto (en el
constructor) se le inyectarn los valores que necesita para ser inicializado
correctamente.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 18
Experiencia y Conocimiento para tu Vida
En la figura observamos la forma de hacer inyeccin de dependencias por
medio de setters. Esto quiere decir que el contenedor de Spring primero
crear la instancia (hibernateDao) y posteriormente le inyectar los valores a
las propiedades dataSource y timeOut por medio de sus mtodos setter.
Podemos observar algo importante en la propiedad jdbcTemplate. El mtodo
setJdbcTemplate no existe en nuestro cdigo, esto se debe a que la
dependencia que tenemos es con la clase DataSource.
Para poder inicializar el objeto JdbcTemplate es necesario proporcionar un
objeto dataSource en su constructor. Esta dependencia se inyecta por medio
del mtodo setDataSource.
Cabe resaltar que la notacin de los JavaBeans no exige que exista una
propiedad llamada dataSource en nuestra clase. La fbrica de Spring inyecta
la propiedad utilizando el mtodo set de la propiedad indicada, as que si
tenemos el tag <property name="dataSource" /> indirectamente se
mandar llamar el mtodo setDataSource de la clase HibernateDao para
inyectar la referencia.
La configuracin anterior tiene como objetivo solicitar un objeto hibernateDao
listo para ejecutar consultas a una Base de Datos.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 19
Experiencia y Conocimiento para tu Vida
La inyeccin de dependencias es un concepto simple pero poderoso, pero
requiere de una implementacin sofisticada para llegar a su mximo potencial.
Algunas de las ventajas de la inyeccin de dependencia son:
Reduccin de dependencias entre objetos
El cdigo est auto documentado, ya que describe sus dependencias
Se puede aplicar una configuracin de dependencias en un solo lugar
Pruebas unitarias ms simples
Reduce la complejidad y orienta la programacin hacia el uso de
interfaces y no hacia clases concretas
Algunas de las caractersticas de la inyeccin de independencia son:
Manejo de Instancias en distintos alcances: Instancias compartidas,
obtenidas a partir de un pool, etc.
Manejo de dependencias va listas, mapas o estructuras set.
Soporte para conversin de tipos
Mtodos de tipo callback no intrusiva. Un mtodo callback es cuando se
enva cdigo ejecutable (ej. Una clase) como un argumento a otro mtodo.
Instanciamiento de objetos va mtodos de la fbrica de Beans.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 20
Experiencia y Conocimiento para tu Vida
Para instanciar la fbrica de los beans, es necesario primero cargar el archivo
descriptor en un objeto de tipo Resource, el cual es una interface.
Posteriormente, debemos instanciar el objeto bean factory proporcionando el
tipo Resource obtenido.
Una de las implementaciones de BeanFactory es XmlBeanFactory.
Nuestra aplicacin interacta directa o indirectamente con el objeto
BeanFactory para poder obtener los beans de Spring incluyendo sus
dependencias.
El objeto BeanFactory cuando se crea, lee (parsea) el archivo descriptor xml
de Spring, y es en este momento cuando se revisan e inyectan las
dependencias de los Beans.
Una vez que ya se ha ledo y cargado en memoria el contenido del descriptor
xml, es posible obtener los Beans de Spring va el objeto BeanFactory.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 21
Experiencia y Conocimiento para tu Vida
Existen varias maneras de instanciar el objeto BeanFactory. El mtodo a
seleccionar depende del tipo de clase o integracin que cree la instancia de la
fbrica.
Los 2 mtodos ms comunes son:
Configuracin va XMLBeanFactory
Configuracin va ClassPathXmlApplicationContext
Sin importar qu mtodo hayamos seleccionado para iniciar la fbrica de
Spring, una vez que ya tenemos el objeto instanciado, podemos solicitar
cualquier de los beans de la fbrica, incluyendo sus dependencias
simplemente utilizando el id o nombre del bean.
Para una referencia ms detallada de la configuracin de las variantes de
BeanFactory, su obtencin y configuracin se puede consultar:
http://book.javanb.com/Professional-Java-Development-with-the-Spring-Framework/BBL0022.html
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 22
Experiencia y Conocimiento para tu Vida
El trmino bean se utiliza para referirse a cualquier componente administrado
por la fbrica de Spring.
Dichas clases siguen la terminologa de los JavaBeans:
Clase con constructor vaco o sin argumentos
Atributos privados
Por cada atributo privado, se genera su mtodo get y set (getters y
setters)
Al configurar un bean de Spring se puede especificar:
El nombre completamente calificado de la clase
La referencia hacia otros beans (dependencias)
Entre otro tipo de configuraciones posibles
Al definir un bean en el descriptor de Spring, podemos especificar las
siguientes atributos:
Nombre de la clase (class)
Nombre del Bean (name)
Alcance de la Clase (scope)
Argumentos del constructor (constructor arguments)
Propiedades (properties)
Modo de Auto-inyeccin (autowiring)
Modo de inicio retardado ( lazy-initialization mode)
Mtodo de inicializacin del bean (initialization method)
Mtodo de destruccin del bean (destruction method)
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 23
Experiencia y Conocimiento para tu Vida
El nombre del archivo puede ser cualquiera, siendo comnmente llamado
applicationContext.xml
Normalmente el archivo de configuracin de Spring se coloca en la raz del
classpath para facilitar su acceso.
Spring permite configurar los descriptores soportando las versiones anteriores,
la nica restriccin sera que las nuevas caractersticas de las ltimas
versiones no funcionaran.
Cada bean se define dentro de una etiqueta <bean> dentro de la etiqueta
<beans>. El atributo id es utilizado para asignar el nombre del bean y debe
ser nico. El atributo class especifica el tipo del bean (clase del bean).
Es posible utilizar el atributo name para especificar nombres alternativos del
bean (separados por coma). El nombre que toma prioridad es el atributo id.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 24
Experiencia y Conocimiento para tu Vida
La inyeccin de parmetros o valores a las propiedades en Spring es muy
variado. Tenemos las siguientes:
Valores simples
Beans
Colecciones
Propiedades definidas en archivos externos
Entre otros
Podemos utilizar los tipos anteriores ya sea en inyecciones por propiedades
(setters) o va el Constructor del bean.
Para relacionar dependencias entre clases, ambos beans ya deben estar
declarados y se debe utilizar la etiqueta <ref> dentro de las etiquetas
<property> o <constructor-arg> del bean objetivo.
El bean a inyectar no tiene que ser exactamente del mismo tipo, las variantes
pueden ser:
Tipo interface
Subtipo de la clase
Tipo de la clase
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 25
Experiencia y Conocimiento para tu Vida
Spring puede auto inyectar (autowiring) las dependencias a travs de la
introspeccin de las clases bean, de manera que no tengamos que declarar
de manera explcita dichas dependencias en el archivo descriptor.
El uso de las anotaciones sustituye la configuracin en el archivo descriptor,
esto descentraliza la configuracin de Spring, pero tiene el beneficio de la
simplificacin de la configuracin de dependencias.
Las propiedades de los beans que tienen dependencias se pueden auto
inyectar ya sea por nombre de la propiedad o por la igualacin del tipo de
dato.
Los argumentos del constructor que tienen dependencias se pueden auto
inyectar por medio de la igualacin del tipo de datos.
El uso de autowiring se debe usar con precaucin debido a que ya no
tenemos una configuracin centralizada, y el entendimiento del sistema puede
ser algo "oscuro" para nuevos programadores.
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 26
Experiencia y Conocimiento para tu Vida
Para hacer autowiring es necesario indicar el paquete que incluye las clases
donde queremos inyectar de manera automtica las dependencias. Este
paquete Java se indica en el descriptor de Spring.
Una vez que hemos indicado la clase, debemos agregar ya sea al constructor,
propiedad o mtodo set respectivo la anotacin @Autowired de Spring.
Con ello lograremos que la fbrica de Spring busque la dependencia a
inyectar. Para realizar esta bsqueda podemos indicar en la anotacin el tipo
de autowiring que queremos manejar. Los tipos de autowiring son:
Por nombre: Ej. autowire = "nombre
adf
Por tipo: Ej. autowire = "tipo
asdf
Por constructor: ej. autowire="constructor
adsf
Por autodeteccin: Ej. autowire="autodetect
asdf
Curso de Spring Framework
Todos los Derechos Reservados Global Mentoring 2011 27

Das könnte Ihnen auch gefallen