Guice Java Injection Framework

Preview:

Citation preview

Guice

http://code.google.com/p/google-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.

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.

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

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.

Injection Process

Service.java

public interface Service { public void go();}

ServiceImpl.java

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

ServiceImpl2.java

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

MyModule.java

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

Client.java

public class Client { private final Service service;

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

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

Main.java

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

Funcionalidades

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

Otros Frameworks

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

Bob Lee

Recommended