I have a user class like such:
class User {
transient springSecurityService
String displayName
String password
protected void encode
In my case I tried to override SecUser's encodePassword() implementation -which calls springSecurityService.encodePassword().
I was surprised because I needed to override the class and the instance (if I didn't override any, it fails):
SecUser.metaClass.encodePassword = { 'a' }
user.metaClass.encodePassword = { 'b' }
any idea of why do I need this?