PDF de programación - Sesión 1: Spring core

<<>>
Imágen de pdf Sesión 1: Spring core

Sesión 1: Spring coregráfica de visualizaciones

Publicado el 22 de Enero del 2019
374 visualizaciones desde el 22 de Enero del 2019
855,8 KB
30 paginas
Experto Universitario Java

Enterprise

Spring

Sesión 1: Spring core



Experto Universitario Java Enterprise

Puntos a tratar

Introducción. Spring vs. JavaEE estándar


• El contenedor de beans (Spring core)


Trabajo con beans
• Definir beans

• Ámbitos

Instanciar beans

• Acceder a recursos externos con beans
• Definir beans en XML y Java

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

2



Experto Universitario Java Enterprise

¿Qué es Spring?


Inicialmente, un ejemplo hecho para el libro
“J2EE design and development” de Rod
Johnson, que defendía alternativas a la
“visión oficial” de aplicación JavaEE
basada en EJBs

• Actualmente es un framework completo
que cubre todas las capas de la aplicación,
con decenas de desarrolladores y miles de
descargas al día
• MVC
• Negocio (donde empezó originalmente)‏
• Acceso a datos

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring Core 3

Spring core

3



Experto Universitario Java Enterprise

Generaciones de EJBs
• La generación 2.X de EJB era demasiado pesada para las máquinas

de la época y además compleja y difícil de usar
• En esta época fue cuando surgió Spring

• La generación actual de EJBs (3.X) es mucho más sencilla de usar




Inspirada en la forma de trabajar de Spring y otros frameworks
Irónicamente, el principal problema de Spring pueden ser sus buenas
ideas

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

4



Experto Universitario Java Enterprise

La filosofía de Spring
• Los objetos de negocio deberían ser POJOs

• Se pueden conseguir servicios equivalentes a los que nos dan los

Inyección como medio de resolver dependencias

EJB usando AOP de manera casi transparente al programador

• El contenedor debe poder ser un servidor web convencional (ej.

• Cuando ya hay algo que funciona, incorpóralo a tu solución, no

Tomcat)

JPA , Hibernate para persistencia de datos

“reinventes la rueda”

• AspectJ para AOP
• Hessian para acceso remoto


...

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

5



Experto Universitario Java Enterprise

Qué nos aporta Spring

+

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

6

POJOServicios EnterpriseInyección de dependenciasEstereotipos configurablesBlueprints

Experto Universitario Java Enterprise

El “ecosistema” de Spring

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

7



Experto Universitario Java Enterprise

Versiones de Spring
• La generación actual es la 3

• En la 2.X, se potenció bastante el framework y se simplificó mucho su

configuración

• Cada vez más énfasis en el uso de anotaciones
• Las novedades de la versión 3 están sobre todo en la capa web

(validación, REST)

• Spring tiene una excelente documentación

– Hay mucha bibliografía adicional disponible y también una amplia

comunidad de desarrollo

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

8



Experto Universitario Java Enterprise

Spring vs. JavaEE estándar

• Hace unos años Spring tenía una

ventaja tecnológica muy
considerable

• Actualmente los dos

“contendientes” son muy similares

• Ventajas de Spring:

• Despliegue en servidores
convencionales (Tomcat)
“Portabilidad”



• Ventajas del estándar

• Es estándar ;-)

JavaOne 2011: Migrating Spring Applications

to Java EE 6

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

9

Spring migration analyzer (JavaEE -> Spring)



Experto Universitario Java Enterprise

Spring Core
• Es un contenedor que gestiona el ciclo de vida de los objetos de

nuestra aplicación
• En realidad no es más que un conjunto de librerías que se puede

ejecutar en cualquier servidor web java

• Ofrece servicios a nuestros objetos, como inyección de

dependencias

• Juntándolo con otros módulos, más servicios





(+ AOP): Transaccionalidad declarativa
(+ Spring Remoting): Acceso remoto
( + Spring Security): Seguridad declarativa

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

10



Experto Universitario Java Enterprise

Spring vs. factorías
• Normalmente un objeto de negocio necesita la colaboración de

otros objetos de negocio, DAOs, etc.

• En código java “puro” la forma estándar de instanciar un objeto

es la factoría (para independizarnos de la implementación)

public class JPATest {
private EntityManagerFactory emf;
public void test1() {
emf = Persistence.createEntityManagerFactory("simplejpa");
EntityManager em = emf.createEntityManager();

}
}

• Spring core es una alternativa a las factorías basada en la

inyección de dependencias

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

11



Experto Universitario Java Enterprise

Inyección de dependencias



“Confiamos” en que “alguien” instancie y nos pase el objeto
que necesitamos para trabajar
– En nuestro caso ese “alguien” es Spring Core

public class JPATest {
private EntityManagerFactory emf;
public void test1() {
emf = Persistence.createEntityManagerFactory("simplejpa");
EntityManager em = emf.createEntityManager();
}

public void setEmf(EntityManagerFactory emf) {

}
}

this.emf = emf;

• Si se configura adecuadamente, Spring nos asegura que el

setter se llamará justo después de crear el JPATest
– Pero para eso el JPATest también lo tiene que crear Spring

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

12



Experto Universitario Java Enterprise

Definir los beans
• Un bean en Spring es un componente cuyo ciclo de vida está

“gestionado” por Spring
• No se crea con new, sino que lo crea Spring Core y lo obtenemos

con inyección de dependencias

• Normalmente relacionado con otros componentes (dependencias)

• Hay tres opciones para la configuración

• XML: la clásica. Tediosa, pero al ser independiente del código

fuente nos da más flexibilidad y elimina la recompilación

• Anotaciones: mucho más cool y más sencilla de usar
• Java: podemos usar el chequeo de código de nuestro IDE para

validar la configuración

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

13



Experto Universitario Java Enterprise

Ficheros de definición de beans
• La manera “clásica” de definir beans es con XML

<?xml version="1.0"?>
<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">



class="es.ua.jtech.spring.negocio.GestorUsuarios">

<bean id="miGestor"

</bean

</beans>

• Aunque no la usemos, siempre tiene que haber al menos un

fichero XML
• Ciertas cosas hay que hacerlas en XML
• O al menos, con XML decirle a Spring que usaremos anotaciones para hacer

cierta tarea

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

14



Experto Universitario Java Enterprise

Definir un bean con anotaciones
• Spring ofrece varios estereotipos:
• O la estándar de JSR330: @Named

• @Service: componente de negocio
• @Repository: DAO
• @Component

package es.ua.jtech.spring.negocio;

@Service(“miGestor”)
public class GestorUsuarios {
public UsuarioTO login(String login, String password) {
...
}
}

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

15



Experto Universitario Java Enterprise

¿Y en el fichero XML...?


Le “decimos” a Spring que examine automáticamente todos los subpaquetes de
algún paquete en busca de beans

xmlns:context="http://www.springframework.org/schema/context"

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">

<context:component-scan base-package=”es.ua.jtech.spring”/>
</beans>

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

16



Experto Universitario Java Enterprise

¿Y para acceder al bean desde mi código?
• Caso 1: Desde otro bean (otro objeto gestionado):

inyección de dependencias. También podríamos usar el
@Inject/@Named estándar

package es.ua.jtech.spring.negocio;

“Programar contra interfaces, no
implementaciones”

@Service
public class UsuariosBO implements IUsuariosBO{
@Autowired
private IUsuariosDAO iudao;

package es.ua.jtech.spring.datos;

...
}

@Repository
public class UsuariosDAO implements IUsuariosDAO{
public Usuario getUsuario(String id) {
...
}

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

17



Experto Universitario Java Enterprise

Spring soporta las anotaciones JSR330

• Preferible si queremos mayor portabilidad
• Pero no soporta las del estándar CDI completo, JSR299

package es.ua.jtech.spring.negocio;

@Named
public class UsuariosBO implements IUsuariosBO{
@Inject
private IUsuariosDAO iudao;

package es.ua.jtech.spring.datos;

...
}

@Named
public class UsuariosDAO implements IUsuariosDAO{
public Usuario getUsuario(String id) {
...
}

Spring

© 2012-2013 Depto. Ciencia de la Computación e IA

Spring core

18



Experto Universitario Java Enterprise

¿Y para acceder al bean desde mi código? (II)
• Caso 2: desde un objeto no gestionado: escribir código

que busque el objeto
• El API cambia si es una aplicación web o de escritorio
• Cuidado: servlets y JSP no son gestionados por Spring.

Pero si usamos el módulo MVC, tenemos Controllers, que sí
lo son

//En un servlet o JSP, sin Spring MVC
ServletContext sc = getServletContext();
WebApplicationContext wac =

IUsuariosBO ubo = wac.getBean(
  • Links de descarga
http://lwp-l.com/pdf14943

Comentarios de: Sesión 1: Spring core (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad