我有一个Google云终端应用程序成功working with Guice。Guice注入Google云终端变形器
我希望将一个单例注入一个Api Transformer。
比方说,我想转换成东西SomethingElse,那里的东西宣称它的变压器是:
import com.google.api.server.spi.config.Transformer;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@Singleton
public class MyApiTransformer
implements Transformer<Something, SomethingElse> {
private MySingleton singleton;
@Inject
public MyApiTransformer(MySingleton singleton) {
this.singleton = singleton;
}
@Override
public Something transformFrom(SomethingElse somethingElse) {
return singleton.something(somethingElse);
}
@Override
public SomethingElse transformTo(Something something) {
return singleton.somethingElse(something);
}
}
请注意,我想委托转型,我吉斯单。当我尝试上述变压器我得到以下错误:
java.io.IOException: com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: Failed to instantiate custom serializer MyApiTransformer, constructors not found: [(interface java.lang.reflect.Type), (class java.lang.Class),()]
看来,吉斯不提供ApiTransformers所以杰克逊不知道如何实例化类没有默认构造函数。
Guice如何将Singleton注入ApiTransformer?
你为什么会选择静态注射? –
@JanGalinski我没有选择它,但它确实有效。我希望有更好的解决方案。 –
使字段非静态并在变量实例上使用“injector.injectMembers()”应该会给出相同的结果,但不会打开“静态”上下文,这可能会以意外的方式干扰guice的单例。 –