【发布时间】:2015-06-15 09:42:07
【问题描述】:
我有一个 Google Cloud Endpoints 应用程序成功working with Guice。
我希望将 Singleton 注入到 Api Transformer。
假设我希望将Something转换为SomethingElse,Something声明它是转换器:
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);
}
}
请注意,我希望将转换委托给我的 Guice 单例。当我尝试使用上述变压器时,出现以下错误:
java.io.IOException:com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException:无法实例化自定义序列化程序 MyApiTransformer,找不到构造函数:[(接口 java.lang.reflect.Type), (class java.lang.Class), ()]
Guice 似乎没有提供 ApiTransformers,所以 Jackson 不知道如何在没有默认构造函数的情况下实例化类。
Guice 如何将 Singleton 注入 ApiTransformer?
【问题讨论】:
标签: java google-app-engine guice google-cloud-endpoints