PDF de programación - Google Guice

Imágen de pdf Google Guice

Google Guicegráfica de visualizaciones

Publicado el 2 de Junio del 2018
376 visualizaciones desde el 2 de Junio del 2018
10,8 MB
22 paginas
Creado hace 14a (01/11/2009)
Juan Galán García
Rubén García Navamuel
Javier Rodríguez Camarma
Álvaro Rodríguez Moya

- ¿Qué es Google Guice?

- Inyección de dependencias. Dependencias de clases en Java

Índice

- Primer ejemplo con Google Guice

- API de Google Guice

- Anotaciones Google Guice

- Conclusiones

UC3M

Software de Comunicaciones

¿Qué es Google Guice?

- Creado por Bob Lee de Google con licencia Apache 2.0.

- Es un Framework basado en INYECCIÓN DE DEPENDENCIAS:

- Inversión de control: principio de Hollywood
- Aligera las dependencias entre clases.

crea

Clase1

Instancia

Clase2

Clase1

inyecta

Motor de

dependencias

crea

Instancia

Clase2

- Utiliza Java 5.0 o superior: permite código tipado:

- Aprovecha los beneficios de Genéricos
- Utiliza ANOTACIONES

- Mayor reutilización de código
- Mayor facilidad para el programador

UC3M

Software de Comunicaciones

Inyección de dependencias

- Veamos un ejemplo para explicar el concepto:

public class Pegamento {
private Dependencia dep = new Dependencia();
}

public class Alambre {
private DependenciaInterface dep;
public Alambre(DependenciaInterface d) {
dep = d;

}

}

UC3M

Software de Comunicaciones

Dependencias de clases en JAVA

Storage.java

interface Storage{

public void store(String uniqueId, Data data);
public Data retrieve(String uniqueId);

}

FileStorage.java

class FileStorage implements Storage{
public void store(String uniqueId, Data data){

// Almacena el objeto en un archivo usando serialización.
}

public Data retrieve(String uniqueId){

// Código para recuperar el objeto.
}

}

UC3M

Software de Comunicaciones

Dependencias de clases en JAVA II

StorageClient.java

public class StorageClient {

public static void main(String[] args) {

// Haciendo uso del disco.
Storage storage = new FileStorage();
storage.store("123", new Data());

// Haciendo uso de la base de datos.
storage = new DatabaseStorage();
storage.store("456", new Data());
}

}

UC3M

Software de Comunicaciones

Primer ejemplo con Google Guice

Operation.java

package operation.service;

public interface Operation {

public int operation(int a, int b);

}

AddOperation.java

package operation.service;

public class AddOperation implements Add{

public int operation(int a, int b) {

return a + b;
}

}

UC3M

Software de Comunicaciones

Primer ejemplo con Google Guice II

AddModule.java

package operation.service;
import com.google.inject.Binder;
import com.google.inject.Module;

public class AddModule implements Module{

public void configure(Binder binder) {

binder.bind(Operation.class).to(AddOperation.class);
}

}

UC3M

Software de Comunicaciones

Primer ejemplo con Google Guice III

OperationClient.java

package opeation.service;

import com.google.inject.Guice;
import com.google.inject.Injector;

public class OperationClient {

public static void main(String[] args) {

Injector injector =

Guice.createInjector(new AddModule());

Operation operation =

injector.getInstance(Operation.class);

System.out.println(operation.operation(10, 54)); //64

}

}

UC3M

Software de Comunicaciones

Api de Google Guice

- BINDER: Mapea interfaces e implementaciones.

- INJECTOR: Se encargan de crear y mantener los objetos que

son usados por los clientes.

Para obtener todas las referencias asociadas con el Injector,
simplemente se hará una llamada a Injector.getBindings( ),
la cual retornará un mapa de objetos de referencias.

- MODULE: Mantienen la configuración de las referencias. Se define la relación

concreta de la implementación que se va a utilizar.

- GUICE: Es la clase en la que los clientes interactúan directamente con los

objetos

UC3M

Software de Comunicaciones

Anotaciones JAVA

- Es una forma de añadir metadatos al código fuente JAVA

- Disponibles en tiempo de ejecución

- Son accesibles al programador mediante reflexión.

- Alternativa a XML

- Toman la forma de una declaración de interfaz con un carácter @

- EJ: @Inject

- Ventajas:

- Facilidad para el programador
- Control en tiempo de ejecución

-Desventajas:

- Poca estandarización
-Configuración expandida por todas las clases en vez de centralizada en
un solo fichero.
- Sobrecarga de memoria

UC3M

Software de Comunicaciones

Anotaciones Google Guice

- Guice viene con un pequeño conjunto de Anotaciones útiles para añadir
metadatos y valores a la aplicación.

- Con ellas se evita tener ficheros de configuración XML.

Aquí expondremos las siguientes:

@Implemented By

@Inject

@Provided By

@Singleton

UC3M

Software de Comunicaciones

Implemented by

- Esta anotación apunta a un objeto de la clase implementada del interfaz.

- Alternativa a utilizar un Module y configurar el Binder.

Operation.java

@ImplementedBy(AddOperation.class)

interface Operation{
public int operation(int a, int b);
}

UC3M

Software de Comunicaciones

Inject

- Para instancias inyectadas directamente al código del cliente, podemos
utilizar este tipo de anotación.

- Puede ser usada en un constructor de una clase.

Client.java

class Client{
@Inject public Client(MyService service){
}

}

UC3M

Software de Comunicaciones

Provided by

- Asumiendo que queremos personalizar el proceso de creación de un objeto
de algún tipo de interfaz, podremos hacerlo directamente mediante una
declaración en la interfaz:

Operation.java

@ProvidedBy(OperationProvider.class)
public interface Operation{
}

UC3M

Software de Comunicaciones

Singleton

- Por defecto, cuando un cliente requiere un objeto mediante
Injector.getInstance() múltiples veces, cada nueva instancia se crea y
retorna.

-Si queremos restringir esto, retornará una sola instancia para la clase, que se
marcará con una anotación Singleton.

MyConnection.java
@Singletonpublic class MyConnection{

public void connect(){

}

public void disconnect(){

}

}

UC3M

Software de Comunicaciones

Proceso de creación de un Injector

- Veamos con detalle el proceso de creación de un Injector:

UC3M

Software de Comunicaciones

Tiempo de ejecución de Guice

- Veamos con detalle el tiempo de ejecución de Guice:

UC3M

Software de Comunicaciones

Comparativa Google Guice – J2EE - Spring

- Ventajas Google Guice:

- Uso de Inyección de dependencias:

- Mayor flexibilidad
- Mayor facilidad para testear y probar unidades

-Uso de Anotaciones:

- Reutilización de código
- Facilidad para el desarrollador

-Desvantajas Google Guice:

-Derivadas del uso de las Anotaciones

- Poca estandarización
- Pueden provocar sobrecarga de memoria

UC3M

Software de Comunicaciones

Premios

- Ganador de los premios Jolt Awards en 2007

- Software Development (E.E.U.U.)

"The Jolts Awards are the Oscars of our industry."

— Chad Fowler

UC3M

Software de Comunicaciones

Referencias

- http://code.google.com/p/google-guice/

- http://www.javabeat.net/articles/29-introduction-to-google-guice-1.html

- http://es.wikipedia.org/wiki/Anotaci%C3%B3n_Java

- http://mgaravaglia.com.ar/blog/index.php/2008/06/16/atando-con-alambre/

- http://www.infoq.com/news/2007/03/guice

- http://www.javabeat.net/articles/29-introduction-to-google-guice-5.html

- http://deveeel.files.wordpress.com/2008/09/google_guice.pdf

UC3M

Software de Comunicaciones

Gracias por su atención
  • Links de descarga
http://lwp-l.com/pdf11527

Comentarios de: Google Guice (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