首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mapstruct接口中注入guice依赖

如何在mapstruct接口中注入guice依赖
EN

Stack Overflow用户
提问于 2020-11-10 21:54:37
回答 1查看 341关注 0票数 1

我的对象

代码语言:javascript
复制
 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
}

我有一个界面

代码语言:javascript
复制
@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?

我试图进行更改,但不确定要添加到哪里

代码语言:javascript
复制
@Inject
Gson gson

我试过这样

代码语言:javascript
复制
public interface TestjkMapper {

  @Inject
  Gson gson

    @Named("authorityToMap")
    static Map authorityToMap(Authority authority) {
        return gson.tojson(authority.tostring())
    }

}

我收到编译器错误,如下所示

代码语言:javascript
复制
variable gson might not have been initialized

如何正确地在接口内注入

这里也是

代码语言:javascript
复制
bind(TestjkMapper.class).to(TestjkMapperImpl.class)

TestjkMapper -我的界面

TestjkMapperImpl -这是在运行时生成的。所以不确定如何绑定这个

确切的问题:

如何使用guice injected gson将学生object转换为学生String

EN

回答 1

Stack Overflow用户

发布于 2020-11-12 02:27:36

如果您希望在映射器中使用自定义注入组件,则需要使用抽象类而不是接口。您不能将字段注入到接口中。

在您的示例中,它将如下所示:

代码语言:javascript
复制
@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);

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64770274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档