Démarrer avec Guice

Configuration d’un “Hello, world!” Exemple

Guice est une bibliothèque Java. Pour l’utiliser, vous devez ajouter un [fichier JAR][1] dans le chemin de classe de votre projet Java.

Exemples de cours

Vous trouverez ci-dessous plusieurs classes pour un “Hello, world!” Exemple.

Une interface d’un bonjour “service”:

public interface HelloWorldService {
    public void sayHello();
}

La mise en place du service :

public class HelloWorldServiceImpl implements HelloWorldService {
    @Override
    public void sayHello() {
        System.out.println("Hello, world!");
    }
}

Un module de nommage Guice. Il est nécessaire d’indiquer à Guice que HelloWorldServiceImpl sera injecté là où un service hello est nécessaire.

import com.google.inject.AbstractModule;

public class HelloWorldModule extends AbstractModule {
    protected void configure() {
        bind(HelloWorldService.class).to(HelloWorldServiceImpl.class);
    }
}

Une classe principale où l’injection réelle d’un service hello a lieu :

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
    }
}

Exécuter avec Gradle

Pour configurer et exécuter rapidement avec Gradle 2.2.+ et Java 8 :

  1. Installez Gradle s’il n’est pas déjà installé

  2. Créez un répertoire vide et naviguez-y avec un shell compatible gradle

  3. Créez un projet Java vide :

    gradle init --type java-library

  4. Dans le build.gradle généré automatiquement :

  • remplacez apply plugin: 'java' par apply plugin: 'application'

  • ajouter la ligne suivante

    mainClassName = 'Main'

  • dans la section dépendances ajouter une dépendance à une version de guice, par exemple :

    dependencies {
      ...
      compile group: 'com.google.inject', name: 'guice', version: '4.1.0'
      ...
    }
    
  1. Ajoutez les classes ci-dessus dans le package par défaut dans src/main/java, chacune dans son propre fichier

  2. Courez et profitez

    ..> gradlew run
        :compileJava
        :processResources UP-TO-DATE
        :classes
        :run
        Hello, world!
    
        BUILD SUCCESSFUL
    
        Total time: 3.595 secs
    

Exécuter avec Maven

Pour configurer et exécuter rapidement avec Maven 3+ et Java 8 :

  1. Installez maven s’il n’est pas déjà installé

  2. Créez un répertoire vide et naviguez-y avec un shell maven activé

  3. Créez un projet Java vide :

    mvn archetype:generate -DgroupId=com.example -DartifactId=guice -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

  4. Basculez vers le sous-répertoire guice

  5. Dans le pom.xml généré automatiquement :

  • dans l’élément dependencies ajoutez une dépendance à guice :

    com.google.inject guice 4.1.0
  • ajoutez le plugin suivant à votre projet (permet un test facile)

    ..... org.codehaus.mojo exec-maven-plugin 1.5.0 Main
  1. Ajoutez les classes ci-dessus dans le package par défaut dans src/main/java, chacune dans son propre fichier

  2. Courez et profitez

    …\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] ————————————————————————

[1] : http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.google.inject%22%20AND%20a%3A%22guice%22