我知道你可以用注解 @Mapper(componentModel = “spring”)
使用spring管理/注入Map器依赖项。我的问题是,与在Map器类本身中声明示例变量相比,这种方法有什么优点:
@Mapper
public interface SomeMapper {
SomeMapper INSTANCE = Mappers.getMapper(SomeMapper.class);
SomethingElse mapSomethingToSomethingElse(Something something);
}
...
// Clients using mapper
SomethingElse result = SomeMapper.INSTANCE.mapSomethingToSomethingElse(input);
1条答案
按热度按时间93ze6v8z1#
当使用spring依赖注入来注入Map器时,您最终会添加额外的构造函数参数/示例字段,这是需要的,因为这样可以更明显地看出类开始依赖太多的依赖项,并且很可能应该进行重构(例如,想想sonar的规则“参数太多”)。
另一个优点是,由于您在spring上下文中将Map器注册为bean,因此可以利用框架功能轻松地在Map器中注入依赖项,并在运行时通过
BeanFactoryPostProcessor
并依赖于所有其他看起来合适的框架抽象。我想说,既然您已经在应用程序中使用了spring,就没有理由不将Map器注册为springbean并以di方式注入它们,而不是将它们转换为静态util。