Grails springSecurityService的默认字段值

Grails springSecurityService的默认字段值,grails,spring-security,Grails,Spring Security,我肯定我以前见过这个,但是我现在找不到任何关于它的东西。当我尝试这样做时: class Foo { def springSecurityService User userInstance = springSecurityService.currentUser } 在编译快结束时,我发现以下错误: 无法获取null对象的属性“currentUser” 我不能为服务设置默认用户吗 运行Grails2.2.0 Foo是一个域类 编辑 我使用javax.annotations.

我肯定我以前见过这个,但是我现在找不到任何关于它的东西。当我尝试这样做时:

class Foo {

    def springSecurityService
    User userInstance = springSecurityService.currentUser

}
在编译快结束时,我发现以下错误:

无法获取null对象的属性“currentUser”

我不能为服务设置默认用户吗

  • 运行Grails2.2.0
  • Foo
    是一个域类
编辑

我使用
javax.annotations.PostConstruct
尝试了下面的解决方案,但从未调用带注释的方法。我不认为它被调用是因为我在它里面放了一个
println
语句,它没有被调用。我正在用
newfoo()实例化我的类

试试这个

import javax.annotation.PostConstruct

class Foo {

    def springSecurityService
    User userInstance

    @PostConstruct
    private void init() {
        userInstance = springSecurityService.currentUser
    }
}
代码无法工作的原因是,在
springSecurityService
被注入依赖项之前,您试图设置
userInstance


我假设
Foo
是一个域类,如果它是
src/groovy
中的一个类,那么这种方法将不起作用,因为这些类不受依赖注入的约束。

是的,它是一个域类。我刚刚得出结论,依赖注入还没有发生,也不确定最好的解决办法是什么。谢谢呵呵。嗯,我没有得到编译错误,但是从来没有调用过
init()
:|@CharlesWood您到底为什么需要将当前用户存储在字段中,考虑到您始终可以从
springSecurityService
访问它,因为
Foo
正在被持久化,我希望数据库记住当前用户是谁,以供以后参考,与域类中的任何字段相同。