Esta sección proporciona una descripción general de qué es una guía y por qué un desarrollador puede querer usarla.
También debe mencionar cualquier tema grande dentro de la guía, y vincular a los temas relacionados. Dado que la Documentación para Guice es nueva, es posible que deba crear versiones iniciales de esos temas relacionados.
Guice es una biblioteca de Java. Para usarlo, debe agregar un archivo JAR en la ruta de clase de su proyecto Java.
A continuación hay varias clases para un "¡Hola mundo!" ejemplo.
Una interfaz de un "servicio" hola:
public interface HelloWorldService {
public void sayHello();
}
La implementación del servicio:
public class HelloWorldServiceImpl implements HelloWorldService {
@Override
public void sayHello() {
System.out.println("Hello, world!");
}
}
Un módulo de nombres de Guice. Es necesario para indicar a Guice que HelloWorldServiceImpl
se inyectará donde se necesite un servicio de saludo.
import com.google.inject.AbstractModule;
public class HelloWorldModule extends AbstractModule {
protected void configure() {
bind(HelloWorldService.class).to(HelloWorldServiceImpl.class);
}
}
Una clase principal donde se lleva a cabo la inyección real de un servicio de saludo:
import javax.inject.Inject;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
public class Main {
@Inject
private HelloWorldService service;//hello service
public static void main(String[] args) {
Main main = new Main();
Module module = new HelloWorldModule();
Injector injector = Guice.createInjector(module);
injector.injectMembers(main);//injects the implementation of the service
main.testGuice();
}
public void testGuice()
{
service.sayHello();//usage of the service
}
}
Para una rápida configuración y ejecución con Gradle 2.2. + Y Java 8:
Instala Gradle si aún no está instalado
Cree un directorio vacío y navegue en él con un shell habilitado para gradle
Crea un proyecto java vacío:
gradle init --type java-library
build.gradle
generado automáticamente: cambiar apply plugin: 'java'
para apply plugin: 'application'
agrega la siguiente linea
mainClassName = 'Main'
en la sección de dependencias agregue una dependencia a una versión de guice, por ejemplo:
dependencies {
...
compile group: 'com.google.inject', name: 'guice', version: '4.1.0'
...
}
Agregue las clases que se muestran arriba en el paquete predeterminado en src/main/java
, cada uno en su propio archivo
Corre y disfruta
..> gradlew run
:compileJava
:processResources UP-TO-DATE
:classes
:run
Hello, world!
BUILD SUCCESSFUL
Total time: 3.595 secs
Para una rápida configuración y ejecución con Maven 3+ y Java 8:
Instalar maven si aún no está instalado
Cree un directorio vacío y navegue en él con un shell habilitado para maven
Crea un proyecto java vacío:
mvn archetype:generate -DgroupId=com.example -DartifactId=guice -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Cambiar al subdirectorio guice
En el pom.xml
generado automáticamente:
dependencies
agregue una dependencia a guice: <dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>4.1.0</version>
</dependency>
<project>
.....
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<configuration>
<mainClass>Main</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
src/main/java
, cada uno en su propio archivo ...\guice>mvn exec:java
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building guice 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- exec-maven-plugin:1.5.0:java (default-cli) @ guice ---
Hello, world!
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.800 s
[INFO] Finished at: 2016-10-09T11:44:41+03:00
[INFO] Final Memory: 10M/309M
[INFO] ------------------------------------------------------------------------