meshkovo1977 Asked:2020-05-08 13:31:52 +0000 UTC2020-05-08 13:31:52 +0000 UTC 2020-05-08 13:31:52 +0000 UTC 如何正确设置映射器? 772 我想向从存储库接收信息的映射器添加一个方法,但它不起作用——例如,我尝试从评论存储库中获取所有评论——它会抛出一个 NPException。告诉我我做错了什么? java 1 个回答 Voted Best Answer petrovich 2020-05-31T20:38:04Z2020-05-31T20:38:04Z 尝试使用MapStruct进行映射。 向 CommentMapper 类添加一个 Component 或 Service 注释(它们之间没有实际区别,只有语义上的区别),在这种情况下,spring 将使用 Autowired 注释拾取 bean 注入。 字段注入(如您使用存储库的情况)是一种过时的做法。可以通过以下几种方式完成: 3.1 创建一个构造函数并在参数中传递两个存储库,在构造函数本身中,将参数中传递的参数分配给类字段。从spring(不是spring boot)4.3版本开始,你不能用@Autowired注解来标记依赖注入的构造函数(仅当只有一个构造函数时)在这里你可以了解更多关于这个细微差别 3.2 从字段中删除@Autowired 注释,将它们设为private final,并将lombok @RequiredArgsConstructor 中的注释添加到类中——与spring 一起,此注释将为您完成所有工作。 两个存储库都必须是 spring bean(取决于您使用的实现 - 如果是 spring 数据,那么它们必须扩展类库中提供的存储库之一)。 ZY:如果在所有操作之后存储库仍然为空,那么请附上存储库的源代码(两者),映射器的整个类(CommentMapper),并附上带有完整堆栈跟踪的错误
字段注入(如您使用存储库的情况)是一种过时的做法。可以通过以下几种方式完成:
3.1 创建一个构造函数并在参数中传递两个存储库,在构造函数本身中,将参数中传递的参数分配给类字段。从spring(不是spring boot)4.3版本开始,你不能用@Autowired注解来标记依赖注入的构造函数(仅当只有一个构造函数时)在这里你可以了解更多关于这个细微差别
3.2 从字段中删除@Autowired 注释,将它们设为private final,并将lombok @RequiredArgsConstructor 中的注释添加到类中——与spring 一起,此注释将为您完成所有工作。
两个存储库都必须是 spring bean(取决于您使用的实现 - 如果是 spring 数据,那么它们必须扩展类库中提供的存储库之一)。
ZY:如果在所有操作之后存储库仍然为空,那么请附上存储库的源代码(两者),映射器的整个类(CommentMapper),并附上带有完整堆栈跟踪的错误