guiceAan de slag met Guice


Opmerkingen

Deze sectie geeft een overzicht van wat guice is en waarom een ontwikkelaar het misschien wil gebruiken.

Het moet ook alle grote onderwerpen binnen guice vermelden en een link naar de gerelateerde onderwerpen bevatten. Aangezien de documentatie voor guice nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

Instelling van een 'Hallo wereld!' voorbeeld

Guice is een Java-bibliotheek. Om het te gebruiken, moet u een JAR-bestand toevoegen aan het classpath van uw Java-project.

Voorbeeldklassen

Hieronder staan verschillende klassen voor een "Hallo wereld!" voorbeeld.

Een interface van een hallo "service":

public interface HelloWorldService {
    public void sayHello();
}
 

De implementatie van de service:

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

Een Guice-naamgevingsmodule. Het is nodig om Guice te instrueren dat HelloWorldServiceImpl zal worden geïnjecteerd waar een hallo-service nodig is.

import com.google.inject.AbstractModule;

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

Een hoofdklasse waar de daadwerkelijke injectie van een hallo-service plaatsvindt:

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

Ren met Gradle

Snel instellen en uitvoeren met Gradle 2.2. + En Java 8:

  1. Installeer gradle indien nog niet geïnstalleerd

  2. Maak een lege map aan en navigeer erin met een shell met gradiënt

  3. Maak een leeg Java-project:

    gradle init --type java-library

  1. In de automatisch gegenereerde build.gradle :
  • wijzig apply plugin: 'java' om apply plugin: 'application' te apply plugin: 'application'

  • voeg de volgende regel toe

    mainClassName = 'Main'

  • voeg in de sectie afhankelijkheden een afhankelijkheid toe aan een versie van guice, bijvoorbeeld:

    dependencies {
      ...
      compile group: 'com.google.inject', name: 'guice', version: '4.1.0'
      ...
    }
     
  1. Voeg de hierboven getoonde klassen toe aan het standaardpakket in src/main/java , elk in een eigen bestand

  2. Ren en geniet

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

Ren met Maven

Snel instellen en uitvoeren met Maven 3+ en Java 8:

  1. Installeer maven indien nog niet geïnstalleerd

  2. Maak een lege map en navigeer erin met een voor maven geschikte shell

  3. Maak een leeg Java-project:

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

  4. Schakel naar de guice submap

  5. In de automatisch gegenereerde pom.xml :

  • in de dependencies element toe te voegen een afhankelijkheid aan guice:
<dependency>
   <groupId>com.google.inject</groupId>
   <artifactId>guice</artifactId>
   <version>4.1.0</version>
</dependency>
 
  • voeg de volgende plug-in toe aan uw project (maakt een eenvoudige testrun mogelijk)
<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>
 
  1. Voeg de hierboven getoonde klassen toe aan het standaardpakket in src/main/java , elk in een eigen bestand
  2. Ren en geniet
...\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] ------------------------------------------------------------------------