我们有以下域类继承策略。
- AbstractDomain(包含默认属性)
- 用户扩展 AbstractDomain
- 运算符扩展用户
在 AbstractDomain 中,我们使用方法创建了实现 beforeUpdate 和 beforeInsert 的方法,因此我们可以在扩展类上扩展它们
抽象领域
abstract class AbstractDomain {
protected void onBeforeInsert() {
...
}
protected void onBeforeUpdate() {
...
}
def beforeInsert() {
onBeforeInsert()
}
def beforeUpdate() {
onBeforeUpdate()
}
}
在用户类中,我们有这样加密用户密码的逻辑..
用户
public class User extends AbstractDomain {
@Override
protected void onBeforeUpdate() {
super.onBeforeUpdate()
if (isDirty('password')) {
encodePassword()
}
}
protected void encodePassword() {
println "encoding password!!!!"
if (springSecurityService) { // added the if clause to ensure
that tests work correct!
password = springSecurityService.encodePassword(password)
}
}
}
操作员
public class Operator extends User {
// code omitted
}
因此,当我尝试更新操作员时,会看到消息“编码密码!!!!” 该属性已设置,但是当我检查数据库时,密码仍然是明文。我所做的更改似乎没有效果并且似乎没有被持久化。
任何线索我可能会错过什么?