我们有以下域类继承策略。
在AbstractDomain中我们已经制定了实现的方法 beforeUpdate和beforeInsert使用方法,所以我们可以扩展它们 扩展课程
AbsrtractDomain
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
}
因此,当我尝试更新运算符时,会看到消息“encoding 密码!!!!“该属性已设置,但当我检查数据库时 密码仍然是明文.. 我所做的改变似乎没有效果,似乎没有坚持。
有什么迹象表明我可能缺少什么?
答案 0 :(得分:0)
查看代码......如果你看到“编码密码!!!”文本,但密码未编码,然后未设置springSecurityService属性,或者encodePassword函数无法工作...这与继承无关。我会把你的println INSIDE移动到if,因为那样更准确。