ita*_*ind 7 spring modelmapper spring-boot
我在 Spring 中使用 ModelMapper。在我的控制器类中,我正在自动装配 ModelMapper bean:
@Autowired
private ModelMapper mapper;
Run Code Online (Sandbox Code Playgroud)
我想在我的控制器方法中在模型类和 DTO 之间进行显式映射,例如:
modelMapper.addMappings(mapper -> {
mapper.map(src -> src.getBillingAddress().getStreet(),
Destination::setBillingStreet);
mapper.map(src -> src.getBillingAddress().getCity(),
Destination::setBillingCity);
});
Run Code Online (Sandbox Code Playgroud)
然后使用映射器来映射类。
我的问题是,在每个控制器方法调用中添加显式映射是否正确?对象模型映射器会开始增加内存大小吗?
另一种解决方案是在创建 ModelMapper bean 时只添加一次映射,但我认为将映射逻辑放在 bean 配置中不是一个好的决定。
在 的 bean 配置中设置映射逻辑是完全可以的ModelMapper。映射是该类的实际任务,因此应该在创建时对其进行配置。
尽管如此,我更喜欢创建多个专用映射器定义,每个类型或一组相关类型都有一个定义。
这样做可以使配置方面与控制器中映射器的实际使用分开 - 无需在一个类中创建一大堆不相关的映射配置代码。事实上,在每个控制器中配置映射器会违反 DRY(不要重复)和 SoC(关注点分离)等原则。
在您的情况(singleton ModelMapper)中,您可以@Configuration为要映射的每种类型或类型组创建带注释的类。在该类中,您将收到ModelMapper并添加类型映射。将您的配置代码添加到
ModelMapper- 接收构造函数或@PostConstruct访问属性的带注释的方法@Autowired ModelMapper。我自己还没有使用过ModelMapper,但在查看其代码库后,我猜测如果您遵循原来的方法,内存使用量不会增加,但您会发现抛出重复映射的异常。
| 归档时间: |
|
| 查看次数: |
6639 次 |
| 最近记录: |