我想从我的应用程序中提取DTO,将它们作为jar提供给层级应用程序。
但我使用了Bean Validation,因此DTO使用自定义约束进行注释。 此自定义注释对验证实现具有依赖性(链接)。
@AuthorisedUser
public class UserDTO implements Serializable {
// ...
}
@Constraint(validatedBy = { AuthorisedUserValidator.class })
public @interface AuthorisedUser { ... }
因此,我的DTO模块依赖于注释,这取决于Validator,它取决于DAO,然后是完整的核心应用程序。
有没有办法打破这种依赖周期? 提供没有依赖关系的DTO jar(或者只提供给bean验证API)的好方法是什么?
由于
答案 0 :(得分:0)
一般依赖规则应该是这样的。 域对象和DTO不应该依赖于任何其他模块。 然后DAO来了。它们应仅依赖于域对象/ DTO。 然后是Service层,它取决于DAO层。这是您编写与数据库相关的验证的地方。 现在UI层使用Service API,在UI层上,您通常运行UI验证。
在您的特定情况下,AuthorisedUserValidator类应仅验证DTO classe。
答案 1 :(得分:0)
您可以在不提供Bean Validation JAR或包含自定义约束注释的JAR的情况下为您的DTO提供JAR。如果使用不存在类型的注释注释DTO类,它们仍然可以加载和使用(当然,在这种情况下你不能使用Bean验证)。
答案 2 :(得分:0)
如果您最关心的是打破周期,最好的办法是使用XML配置。