Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.jbowman;
- import com.google.inject.AbstractModule;
- import com.google.inject.Guice;
- import com.google.inject.Inject;
- import com.google.inject.Injector;
- import com.google.inject.Module;
- import com.google.inject.Provides;
- import com.google.inject.TypeLiteral;
- import com.google.inject.matcher.Matchers;
- import com.google.inject.spi.TypeEncounter;
- import com.google.inject.spi.TypeListener;
- public class GuiceTest {
- public static class A { @Inject B b; }
- public static class B { @Inject C c; }
- public static class C { }
- public static class D { }
- public static class E { }
- public static void main(String[] args) {
- Module module = new AbstractModule() {
- public void configure() {
- bindListener(Matchers.any(), new TypeListener() {
- @Override
- public <I> void hear(TypeLiteral<I> typeLiteral, TypeEncounter<I> typeEncounter) {
- System.out.println("heard " + typeLiteral);
- }
- });
- }
- @Provides D getD(E getE) {
- return new D();
- }
- };
- System.out.println("Injector creation started");
- Injector injector = Guice.createInjector(module);
- System.out.println("Injector creation complete");
- injector.getInstance(A.class);
- System.out.println("A request complete");
- injector.getInstance(D.class);
- System.out.println("D request complete");
- }
- }
- /* output:
- Injector creation started
- heard com.google.inject.internal.ProviderMethod
- heard com.google.inject.Stage
- heard com.jbowman.GuiceTest$E
- Injector creation complete
- heard com.jbowman.GuiceTest$C
- heard com.jbowman.GuiceTest$B
- heard com.jbowman.GuiceTest$A
- A request complete
- D request complete
- */
Add Comment
Please, Sign In to add comment