所有“ Guice构造函数参数”答案在某种程度上似乎都不完整。这是一个完整的解决方案,包括用法:
interface FooInterface { String getFooname();}
//在实现类上注释构造函数和辅助参数
class Foo implements FooInterface { String bar; @Inject Foo(@Assisted String bar) { this.bar = bar; } // return the final name public String getFooname() { return this.bar; }}
//使用仅接受辅助参数的create()方法创建工厂接口。
// FooFactory接口没有显式的实现类(Guice Magic)
interface FooFactory { Foo create(String bar);}
//将该工厂绑定到AssistedInject创建的提供者
class BinderModule implements Module { public void configure(Binder binder) { binder.install(new FactoryModuleBuilder() .implement(FooInterface.class, Foo.class) .build(FooFactory.class)); }}
//现在使用它:
class FooAction { @Inject private FooFactory fooFactory; public String doFoo() { // Send bar details through the Factory, not the "injector" Foo f = fooFactory.create("This foo is named bar. How lovely!"); return f.getFooname(); // "This foo is named bar. How lovely!" }}
- 这里有很多帮助:[https](https://google.github.io/guice/api-
- docs/latest/javadoc/index.html?com/google/inject/assistedinject/FactoryModuleBuilder.html)
- //google.github.io/guice/api-
docs/latest/javadoc/index.html?com/
google/inject/assistedinject/
FactoryModuleBuilder.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)