15
Guice http://code.google.com/p/google-g Java Injection Framework

Guice Java Injection Framework

Embed Size (px)

Citation preview

Page 1: Guice  Java Injection Framework

Guice

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

Java Injection Framework

Page 2: Guice  Java Injection Framework

Inversion of Control

IoC es un patron de disenno en el que se basa otro patron de disenno: “Dependency of Injection” que es el que implementa GoogleGuice.

Page 3: Guice  Java Injection Framework

Dependency Injection

Inyección de Dependencias (en inglés Dependency Injection, DI) es un patrón de arquitectura orientado a objetos, en el que se inyectan objetos a una clase en lugar de ser la propia clase quien cree el objeto.

Page 4: Guice  Java Injection Framework

Java Annotations

Desde el JDK 5 (Tiger) se dispone de las Java Annotations ( anotaciones ) que le permiten al programador agregar metadatos a el codigo fuente, metadatos que pueden ser explotados por otros programas o frameworks.

JUnitJPAHibernate

Page 5: Guice  Java Injection Framework

Google Guice

Es un Framework para “Dependency Injection” para Java 5 o superior.Utiliza Java Annotations.

Guice elimina la necesidad de Factories y el uso de new en el codigo de Java.Se puede pensar el @Inject como un nuevo new.

Page 6: Guice  Java Injection Framework

Injection Process

Page 7: Guice  Java Injection Framework

Service.java

public interface Service { public void go();}

Page 8: Guice  Java Injection Framework

ServiceImpl.java

@Singletonpublic class ServiceImpl implements Service { public void go() { System.out.println("Este es un servicio..."); }}

Page 9: Guice  Java Injection Framework

ServiceImpl2.java

@Singletonpublic class ServiceImpl2 implements Service { public void go() { System.out.println("Este es otro servicio..."); }}

Page 10: Guice  Java Injection Framework

MyModule.java

public class MyModule implements Module { public void configure(Binder binder) { binder.bind(Service.class).to(ServiceImpl.class).in(Scopes.SINGLETON); }}

Page 11: Guice  Java Injection Framework

Client.java

public class Client { private final Service service;

@Inject public Client(Service service){ this.service = service; }

public void go(){ service.go(); }}

Page 12: Guice  Java Injection Framework

Main.java

public static void main(String[] args) { Injector injector = Guice.createInjector(new MyModule()); Client client = injector.getInstance(Client.class); client.go(); }

Page 13: Guice  Java Injection Framework

Funcionalidades

Inject: Strings. Metodos. Clases. Atributos. Usa la funcionalidad de Annotations.Extensible mediante annotations.Facilidad para la implementacions de Tests, Junit, Mocks, Stubs.

Page 14: Guice  Java Injection Framework

Otros Frameworks

Spring http://www.springframework.org/HiveMind http://hivemind.apache.org/PicoContainer http://www.picocontainer.org/ Etc, etc.

Page 15: Guice  Java Injection Framework

Bob Lee