我首先使用 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/