假设我有一个第三方类,如下所示:如何帮助辅助依赖项?
public class MyObject {
@Inject
public MyObject(Foo foo, Bar bar) { ... }
}
现在假设我有一个工厂接口,像这样:
public interface MyObjectFactory {
public MyObject build(Bar bar);
}
的想法是,我希望有一个MyObjectFactory
是建立一个MyObject
对于固定的Foo
- 也就是说,从外部实质上在注解对Bar
构造函数参数添加。当然,手动执行MyObjectFactory
始终是可能的:
public class MyObjectFactoryImpl implements MyObjectFactory {
@Inject private Provider<Foo> foo;
@Override
public MyObject build(Bar bar) { return new MyObject(foo.get(), bar); }
}
但是,让我们说,有需要我有吉斯建立MyObject
实例条件 - 例如,方法拦截器。这似乎是对“注射进样器”的作业:
public class MyObjectFactoryImpl implements MyObjectFactory {
@Inject private Injector injector;
@Override
public MyObject build(Bar bar) {
Injector child = injector.createChildInjector(new AbstractModule() {
@Override
protected void configure() {
bind(Bar.class).toInstance(bar);
// Set up method interceptors for MyObject here...
}
});
return child.getInstance(MyObject.class);
}
}
这听起来很邪恶,锅炉板,Y,所以如果有任何替代实现方式和/或办法有吉斯产生我想知道工厂impl。
同样,由于'MyObject'是第三方,我不能修改'MyObject';否则我只能使用普通的老式辅助注射。 –
将它包裹到另一个对象中。 –