Внедрение Guice в именованные строковые поля

У меня есть класс:

public class FizzBuzz {
    @Named("Red") private String redService;

    public static void main(String[] args) {
        GuiceTest testApp = new GuiceTest();

        testApp.run();
    }

    private void run() {
        Injector inj = Guice.createInjector(new MyModule());

        redService = (String)inj.getInstance(String.class);

        // Should print "red-service" but is instead an empty string!
        System.out.println("redService = " + redService);
    }

    // ... Rest of class omitted for brevity
}

public class MyModule extends AbstractModule {
    @Override
    protected void configure() {
        bind(String.class).annotatedWith(Names.named("Red")).toInstance("red-service");
    }
}

В моем модуле я даю указание Guice привязать все экземпляры String.class@Named"Red" к экземпляру строки "red -service", однако я не вижу этого в выведенном операторе печати. Как я неправильно использую Guice?

7
задан IAmYourFaja 31 May 2012 в 17:25
поделиться