我的对象
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,而不是新的Gson()
根据此How can i combine Guice and Mapstruct?
我试图进行更改,但不确定要添加到哪里
@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 injected gson将学生object转换为学生String
发布于 2020-11-12 02:27:36
如果您希望在映射器中使用自定义注入组件,则需要使用抽象类而不是接口。您不能将字段注入到接口中。
在您的示例中,它将如下所示:
@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);
}https://stackoverflow.com/questions/64770274
复制相似问题