[英]Custom injection with standard annotations
是否可以使用基於注入點而無需定義自定義注釋而計算出的構造函數/工廠參數來執行自定義注入?
給定一個代碼:
class Foo {
public Foo() {}
public Foo(java.lang.reflect.Field field) {}
}
class Bar {
@javax.inject.Inject Foo foo;
}
我如何配置guice以使用Foo
第二個構造函數( 傳遞目標字段 )而不修改Bar
。
我知道guice可以使用標准@Inject進行java.util.logging.Logger的自定義注入,但這似乎是硬編碼的,並且使用內部api。
您可以使用注入提供程序來執行此操作。 請參閱https://code.google.com/p/google-guice/wiki/ProviderBindings和https://code.google.com/p/google-guice/wiki/ProvidesMethods 。 您只需要告訴Guice綁定對象時如何實例化該對象。
例如,在我的一個項目中,我嘗試了以下方法:
public static class CalendarServiceProvider implements Provider<CalendarService> {
@Inject
GAppsOAuth oauth;
private GCalendarService service;
@Override
public CalendarService get() {
if (service == null) {
service = new GCalendarService(oauth);
}
return service;
}
}
我不知道這是否是您要的東西,但希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.