[英]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.