2014-06-18 162 views
1

我确信我以前见过这个,但现在我找不到它。当我尝试这样做:springSecurityService的默认字段值

class Foo { 

    def springSecurityService 
    User userInstance = springSecurityService.currentUser 

} 

我得到朝编译结束以下错误:

无法获取财产“currentUser”空对象

我不能设置具有服务的默认用户?

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

编辑

我尝试了以下解决方案与javax.annotations.PostConstruct,但标注的方法永远不会被调用。我不认为这是被调用的,因为我把一个println声明,它不被调用。我正在用new Foo()实例化我的课程。

回答

2

试试你的代码不起作用这个代替

import javax.annotation.PostConstruct 

class Foo { 

    def springSecurityService 
    User userInstance 

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

的原因是因为你想设置userInstancespringSecurityService之前一直依赖注入。

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

+0

是的,这是一个域类。我刚刚得出的结论是,依赖注入还没有发生,并不确定最好的解决方法是什么。谢谢! –

+0

呵呵。好吧,我没有收到编译错误,但是'init()'永远不会被调用:| –

+0

@CharlesWood为什么您确实需要将当前用户存储在字段中,因为您始终可以通过'springSecurityService'访问它? –