假設我有一個第三方類,如下所示:如何幫助輔助依賴項?
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';否則我只能使用普通的老式輔助注射。 –
將它包裹到另一個對象中。 –