我首先使用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方法(它有许多优点,但这不是写它们的地方)但我想添加方法...只是不写“贫血域模型”并允许客户端检查搜索在发送到服务器之前满足标准。
答案 0 :(得分:1)
你似乎在混合各种概念。很酷,你不想拥有一个贫血的领域模型,但这与你的DTO无关,而后者又与WSDL中的类看起来没有任何关系。
DTO有州但没有行为。因此,他们只有getter / setter但不包含逻辑(例如验证)。
域模型中的对象具有状态和行为(除非它们当然是贫血的。)
因此,如果需要DTO,这取决于您的架构,您将业务对象从域模型转换为DTO,反之亦然。如果您考虑从WSDL DTO生成的类可以正常,那么您需要将它们转换为业务对象。在这方面“转换”意味着转移他们的国家。