java - 如何在 WSDL-first 方法中使用一些内容编写 DTO(例如 : validation) method? 只是不写 "anemic domain model"

标签 java wsdl dto contract-first

我首先使用 WSDL。我有 WSDL 并使用 Maven 插件“cxf-codegen-plugin”生成 Java 代码。使用Code-first可以编写DTO例如:

public class ServiceSearchCriteria {
    private String phoneNumber;
    private String businessId;

    public boolean validateSearchCriteria() {
        if ((phoneNumber != null) || (businessId != null)) {
            return true;
        }
        return false;
    }
    //... setters/getters etc.
}

因此,使用Code-First(Java-First)可以很容易地编写带有验证方法的DTO。客户可以检查搜索条件是否得到满足。该类将由带有 @WebService 注释的 WebService 类返回。这会起作用。

但是如何使用 WSDL-First 方法编写这样的 DTO(使用某种方法)?

我非常喜欢 WSDL-First 方法(它有很多优点,但这里不是写它们的地方),但我想添加方法......只是不要编写“贫血域模型”并允许客户端检查搜索发送到服务器之前满足条件。

最佳答案

您似乎混淆了各种概念。您不想拥有贫乏的域模型,这很酷,但这与您的 DTO 无关,而 DTO 又与 WSDL 中的类的外观无关。

一个DTO有状态但没有行为。因此,它们只有 getter/setter,但不包含逻辑(例如验证)。

领域模型中的对象具有状态行为(当然除非它们贫乏)。

因此,如果需要 DTO(这取决于您的架构),您需要将业务对象从域模型转换为 DTO,反之亦然。如果您认为从 WSDL DTO 生成的类没问题,那么您需要将它们转换为您的业务对象。 “转换”在这方面意味着转移他们的状态。

关于java - 如何在 WSDL-first 方法中使用一些内容编写 DTO(例如 : validation) method? 只是不写 "anemic domain model",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14724501/

相关文章:

引用同一类中的方法时,Java Reflection NoSuchMethodException

java - 代码工厂方法

.net - Delphi7 WCF方法输入参数

java - 设计具有外键关系的 DTO

java - com.google.appengine :appengine-api-1. 0-sdk:jar 的“dependency.dependency.version”必须是有效版本,但为 '${appengine.target.version}'

java - 如何让 JavaCritical 真正在 JNI 上工作

java - Spring Web 服务动态 wsdl 不为架构元素生成消息

java - 使用 XLedger 的 SOAP/WSDL 接口(interface)时遇到问题

c# - POCO 应该从 DTO 派生还是更好?

asp.net-mvc - 领域实体、DTO 和 View 模型