我可以创建一个提供程序,每次调用get时都会返回一个新对象

osh*_*hai 1 java provider guice

我希望在课堂上有一个提供者成员,当'get'调用时,每次都会给我一个新对象.我怎样才能做到这一点?

public class GuiceInjectionTest
{
  @Inject
  Provider<MyClass> provider;

  public Provider<MyClass> get()
  {
    //I want a new instance every time here that is injected by guice
    return provider.get() 
  }
}
Run Code Online (Sandbox Code Playgroud)

注意我希望这个新实例由Guice注入,所以我不能new MyClass()在提供者实现中创建一个.

Col*_*inD 10

虽然@ GuillaumePolet的解决方案可行,但它并不是首选的方法.绑定MyClass是正确的,但你不应该Injector为此注入(你应该避免注入Injector一般).

对于您可以注射的任何类型,Guice可以自动注入Provider该类型.所以你应该做的是:

@Inject
Provider<MyClass> provider;

...
return provider.get();
Run Code Online (Sandbox Code Playgroud)