guice java injection framework
TRANSCRIPT
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