[英]How to inject guice dependency in mapstruct interface - java
我的对象
Public void Student(){
private string name;
private int age;
}
Public void ClassRoom(){
private string roomNo;
private Student student; //Student Object
}
Public void School(){
private string roomNo;
private String student; //String student
}
我有一个界面
@Mapper(componentModel = "jsr330", unmappedTargetPolicy = ReportingPolicy.IGNORE, builder = @Builder(disableBuilder = true))
public interface TestjkMapper {
@Named("convertObjToString")
static String convertObjToString(Student student) {
return new Gson.tojson(student)
}
@Mapping(source = "student", target = "student",qualifiedByName = "convertObjToString")
School mapClassRoomToSchool(@NonNull ClassRoom classRoom);
}
我打算注入那个 gson 而不是 new Gson()
我尝试进行更改,但不确定在哪里添加
@Inject
Gson gson
我试过这样
public interface TestjkMapper {
@Inject
Gson gson
@Named("authorityToMap")
static Map authorityToMap(Authority authority) {
return gson.tojson(authority.tostring())
}
}
我收到如下编译器错误
variable gson might not have been initialized
如何在该接口内正确注入
这里也是
bind(TestjkMapper.class).to(TestjkMapperImpl.class)
TestjkMapper - 我的界面
TestjkMapperImpl - 这是在运行时生成的。 所以不知道如何绑定这个
确切的问题:
如何使用 guice 注入的gson
将 Student object
转换为 Student String
如果要在映射器中使用自定义注入组件,则需要使用抽象类而不是接口。 您不能将字段注入接口。
在您的示例中,它将如下所示:
@Mapper(componentModel = "jsr330", unmappedTargetPolicy = ReportingPolicy.IGNORE, builder = @Builder(disableBuilder = true))
public abstract class TestjkMapper {
@Inject
Gson gson;
@Named("convertObjToString")
static String convertObjToString(Student student) {
return gson.tojson(student)
}
@Mapping(source = "student", target = "student", qualifiedByName = "convertObjToString")
School mapClassRoomToSchool(@NonNull ClassRoom classRoom);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.