【发布时间】:2021-04-08 13:13:21
【问题描述】:
我有一个通过@JsonAdapter 注解使用自定义 json 序列化器的类:
import com.google.gson.annotations.JsonAdapter;
@JsonAdapter(IFooAdapter.class)
public interface IFoo {
//...
}
IFooAdapter 类依赖于应该注入的IMyFactory。
通过Guice.CreateInjector() 和bind(IMyFactory.class).to(MyFactoryImpl.class); 配置注入。
但是我怎样才能将它注入到我的 IFooAdapter 类(如下所示)中,该类仅用于 @JsonAdapter 注释(如上所示)?
import com.google.gson.JsonElement;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.google.inject.Inject;
public class IFooAdapter implements TypeAdapter<IFoo> {
@Inject IMyFactory myFactory; // <-- THIS INJECTION DOES NOT WORK
@Override public IFoo read(JsonReader in) {
return myFactory.create(/*...*/);
}
@Override public void write(JsonWriter out, IFoo value) {
//...
}
}
通过guice.InjectMembers(myMainClass)注入后,当我尝试通过GsonBuilder().create().fromJson()解析json,调试IFooAdapter.read()时,myFactory为Null。
(这其实并不奇怪,毕竟 IFooAdapter 不是 myMainClass 的成员)
但是我该如何正确注入呢?
【问题讨论】:
标签: java dependency-injection annotations gson guice