springSecurityService的默认字段值

时间:2014-06-18 18:48:06

标签: grails spring-security

我确定我以前见过这个,但我现在找不到任何相关信息。当我尝试这样做时:

class Foo {

    def springSecurityService
    User userInstance = springSecurityService.currentUser

}

我在编译结束时遇到以下错误:

  

无法在null对象

上获取属性'currentUser'

我可以不使用服务设置默认用户吗?

  • 运行Grails 2.2.0。
  • Foo是一个域类。

修改

我使用javax.annotations.PostConstruct尝试了以下解决方案,但从未调用带注释的方法。我不认为它被调用,因为我在其中放了一个println语句,它不会被调用。我用new Foo()实例化了我的课程。

1 个答案:

答案 0 :(得分:2)

试试这个

import javax.annotation.PostConstruct

class Foo {

    def springSecurityService
    User userInstance

    @PostConstruct
    private void init() {
        userInstance = springSecurityService.currentUser
    }
}

您的代码无效的原因是您尝试在userInstance依赖注入之前设置springSecurityService

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