2013-08-22 3 views
1

Я пытаюсь узнать, как выглядит guice с картой Play 2.1. У меня есть служба, к которой мне нужен доступ за пределами пакета услуг. Я разместил ниже в глобальном файлеPlay 2.1 with Guice 3.0 - Доступ недоступна снаружи Класс контроллера

protected Injector configure() { 
     injector = Guice.createInjector(new AbstractModule() { 
      @Override 
      protected void configure() { 
       bind(MyService.class).to(MyServiceImpl.class).in(Singleton.class); 
      } 
     }); 

     return injector; 
    } 

    @Override 
    public <A> A getControllerInstance(Class<A> clazz) throws Exception { 
     return injector.getInstance(clazz); 
    } 

Внутри класс контроллера может добраться до моего объекта, делая ниже, и кажется, что все будет хорошо

@Inject 
MyService serviceObj 

Но в другом месте за пределами контроллера тот же объект представляется равным нулю. Например, у меня есть основной модуль, который заботится о разговоре с сервисом. Классы контроллеров передают задание основному модулю. Мне нужно иметь возможность получить этот MyService obj в основных классах модулей.

Что мне не хватает здесь, ребята?

Благодаря Karthik

ответ

1

я понял выход, чтобы сделать это.

В моем методе конфигурирования я должен был использовать этот

protected Injector configure() { 
     injector = Guice.createInjector(new AbstractModule() { 
      @Override 
      protected void configure() { 
       requestStaticInjection(TheClassThatNeedsMyService.class); 
      } 
     }); 

     return injector; 
    } 

И в моем TheClassThatNeedsMyService я должен был просто сделать

@Inject MyService serviceObj; 

Просто для справки это как мой класс Service выглядит

@ImplementedBy(MyServiceImpl.class) 
public interface MyService{ 
... 
} 

@Singleton 
public class MyServiceImpl implements MyService{ 
... 
} 

Теперь я могу получить доступ к моему сервису, независимо от того, хочу ли я в своей заявке , Надеюсь, что это помогает кому-то

Thanks Karthik

+0

Это, похоже, больше не работает в Play 2.4. Вы знаете, что случилось с этой функцией? Я пытаюсь заставить Injection Dependency работать вне контроллеров в 2.4.x –

Смежные вопросы