有趣的问题:
我有一个类似于
的域类class Dummy {
String key = (''+new Date()).encodeAsSHA256()
}
当我尝试启动我的应用程序时,我收到一条长的堆栈跟踪/错误消息,说明
Invocation of init method failed; nested exception is org.hibernate.InstantiationException: could not instantiate test objectmad.Dummy
...
Caused by MissingMethodException: No signature of method: java.lang.String.encodeAsSHA256() is applicable for argument types: () values: []
现在,如果我删除.encodeAsSHA256()
,以开发模式启动应用程序并重新插入编码,它可以工作: - )
基本上,代码运行@ runtime,但似乎@初始化时间,String类尚未为编码器做好准备。
知道如何在不创建自定义构造函数的情况下解决这个问题吗?
答案 0 :(得分:3)
找到了一个解决方案:编码器也可以直接调用,但你必须知道正确的包......
import org.codehaus.groovy.grails.plugins.codecs.SHA256Codec
class Dummy {
String key = SHA256Codec.encode(''+new Date())
}
......解决问题...
答案 1 :(得分:0)
为什么不是构造函数?这属于构造函数......