0

我首先使用 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 方法(它有很多优点,但这里不是写它们的地方)但我想添加方法......只是不写“贫血域模型”并允许客户端检查之前满足的搜索条件发送到服务器。

4

1 回答 1

1

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

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

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

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

于 2013-02-06T08:34:26.430 回答