使用Springbean与mapstruct的静态示例模式

guicsvcw  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(613)

我知道你可以用注解 @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);
93ze6v8z

93ze6v8z1#

当使用spring依赖注入来注入Map器时,您最终会添加额外的构造函数参数/示例字段,这是需要的,因为这样可以更明显地看出类开始依赖太多的依赖项,并且很可能应该进行重构(例如,想想sonar的规则“参数太多”)。
另一个优点是,由于您在spring上下文中将Map器注册为bean,因此可以利用框架功能轻松地在Map器中注入依赖项,并在运行时通过 BeanFactoryPostProcessor 并依赖于所有其他看起来合适的框架抽象。
我想说,既然您已经在应用程序中使用了spring,就没有理由不将Map器注册为springbean并以di方式注入它们,而不是将它们转换为静态util。

相关问题