当前位置: 首页 > 知识库问答 >
问题:

带有AWS SDk V2 Builder的Mapstruct

后学
2023-03-14

对于内部映射,我为AWS SDK模型V2创建了POJO/DTO

为了映射变量,我正在使用Mapper注释使用MapStruct,但是在注释处理过程中生成的实现没有使用任何getter,而是正确添加了带有生成器的setter,但使用null

@Mapper
public interface Ec2Mapper {
LaunchTemplateBlockDeviceMappingModel mapLaunchTemplateBlockDeviceMappingModel(
      LaunchTemplateBlockDeviceMapping launchTemplateBlockDeviceMapping);
}


@Generated(
    value = "org.mapstruct.ap.MappingProcessor",
    date = "2021-12-08T15:58:00+0530",
    comments = "version: 1.4.2.Final, compiler: IncrementalProcessingEnvironment from gradle-language-java-6.4.1.jar, environment: Java 1.8.0_292 (AdoptOpenJDK)"
)
public class Ec2MapperImpl implements Ec2Mapper {

    @Override
    public LaunchTemplateBlockDeviceMappingModel mapLaunchTemplateBlockDeviceMappingModel(LaunchTemplateBlockDeviceMapping launchTemplateBlockDeviceMapping) {
        if ( launchTemplateBlockDeviceMapping == null ) {
            return null;
        }

        String deviceName = null;
        String virtualName = null;
        LaunchTemplateEbsBlockDeviceModel ebs = null;
        String noDevice = null;

        LaunchTemplateBlockDeviceMappingModel launchTemplateBlockDeviceMappingModel = new LaunchTemplateBlockDeviceMappingModel( deviceName, virtualName, ebs, noDevice );

        return launchTemplateBlockDeviceMappingModel;
    }
}

AWS SDK V2模型没有带前缀get的getters,它直接是变量的名称,如何为这个场景配置映射结构。

共有1个答案

吴缪文
2023-03-14

MapStruct提供了一种通过其AccessorNamingStrategy定义某个方法是getter还是setter的方法。

理论上,您可以编写一个自定义的AccessorNamingStrategy,它将能够检测来自AWS SDKJava2的方法作为getters。请记住,清楚地返回带有返回类型且没有参数作为getter的每个方法可能会导致误报。

理想情况下,这些方法应该由AWS SDK进行注释,然后您可以使用它来检测一个方法是否是getter。SDK当前不执行此操作。你可以要求这样做,但我不确定AWS团队是否愿意这样做。

 类似资料:
  • 现在我的问题是,如何在自定义的而不是自定义的中重写方法?我没有在这里公布我的代码,因为它与链接的代码本质上是相同的,只是我需要为子创建一个自定义的来代替,这样它就可以按照“pptang”的答案所述进行正确的度量。 否则,有没有比在第二个RecyclerView中使用1个RecyclerView更好的方法?只能有1个RecyclerView使用上述列表和每个中唯一项的网格填充活动/片段吗?

  • 问题内容: 两者之间到底有什么区别 和 第一个只是加快字段初始化速度的捷径吗?有性能方面的考虑吗? 问题答案: 第二种形式总是创建一个空的地图。 第一种形式是地图文字的特殊情况。地图文字允许创建 非空 地图: 现在,您的(通用)示例: 是没有初始值(键/值对)的地图文字。它完全等同于: 此外,这是为地图指定初始容量(大于初始分配的元素数量)的唯一方法。例: 将创建一个地图,该地图具有足够的空间来容

  • 在使用MapStruct、Lombock和Spring时,我在Tomcat 9中的应用程序部署中遇到以下错误: 我的spring配置类在包层次结构的根目录中设置包扫描。映射器的实现也是在target/generated-sources下生成的: 我的错误表明Spring找不到实现类,我遗漏了什么?我试图将generated-sources文件夹添加到构建路径并将其包含在包扫描中,但没有成功。

  • 问题内容: 查看量角器文档,我发现有一个选项可以不使用Selenium服务器使用flag 来运行量角器。 使用硒服务器和不使用硒服务器运行量角器测试之间的区别是什么,除了后者仅支持Chrome,Firefox? 问题答案: 首先,目前,您有 5种不同的内置选项/方式来连接浏览器驱动程序 : 指定在本地启动Selenium独立服务器 指定连接到正在运行的硒服务器(本地或远程) 设置并连接到Sauce

  • 代码: 上下文:尝试在JavaScript中使用 编辑: 完整代码: 编辑: 无法获取

  • 在GlassFish Server开源版本3.1中部署。1(构建12): 引起原因:java.security.PrivilegedActionExcema:com.sun.xml.bind.v2.runtime.IllegalAnnotationsExceptions: 1个IllegalAnnotationExceptions的计数没有ObjectFactory与@XmlElementDecl

  • 问题内容: 我正在尝试制作一个支持cookie的URLConnection。根据文档,我可以使用: 我无法使此代码正常工作,然后我看到这仅适用于API 9(2.3)。但是,在较旧的模拟器中使用CookieManager不会出现错误,CookieManager存在,但是无法构造。有什么方法可以使此版本适用于早期版本?我试过了: 但这不起作用。 问题答案: 我能够使用Ian Brown的CookieM

  • 问题内容: 情况:像在纸牌游戏中一样,画一堆纸牌。堆好。 为实现此目的,我将结合使用接口的自定义实现。使用自定义LayoutManager的原因是堆栈方向各不相同,有时纸牌彼此完全覆盖,有时彼此覆盖,而对于LayoutManager来说,此逻辑似乎是一项好工作,因为这基本上归结为设置布局的位置。牌。 因此,负责设置堆栈中所有组件的X和Y坐标。在另一方面是负责他们的z坐标(通过其层)。 向组件添加组