我想添加一些特定的业务规则,以在实例化实体时强制执行验证。
实体的类有一个名为String的字段名称。我想强制说,name字段在构造期间必须至少有一个内容字符。
我如何在模型中处理这些业务规则?我希望在实体级别拥有它,并避免在服务中处理此验证。
答案 0 :(得分:1)
您可以使用GContracts之类的内容。然后你可以像这样声明一个类Invariant
:
@Grab('org.gcontracts:gcontracts:1.1.3')
import org.gcontracts.annotations.*
@Invariant( { name?.size() > 0 } )
class Entity {
String name
public Entity( String name ) {
this.name == name
}
}
assert new Entity( 'tim' )
assert new Entity( '' )
该示例中对new Entity( '' )
的调用失败:
org.gcontracts.ClassInvariantViolation: <class invariant> Entity
{ name?.size() > 0 }
| | |
"" 0 false