我敢肯定我以前看过,但现在找不到任何东西。当我尝试这样做时:

class Foo {

    def springSecurityService
    User userInstance = springSecurityService.currentUser

}

在编译结束时出现以下错误:



不能为默认用户设置服务吗?
  • 运行Grails 2.2.0。
  • Foo是域类。

  • 编辑

    我使用javax.annotations.PostConstruct尝试了以下解决方案,但从未调用带注释的方法。我不认为它被调用是因为我在其中插入了println语句,但该语句未被调用。我正在使用new Foo()实例化我的类(class)。

    最佳答案

    试试这个

    import javax.annotation.PostConstruct
    
    class Foo {
    
        def springSecurityService
        User userInstance
    
        @PostConstruct
        private void init() {
            userInstance = springSecurityService.currentUser
        }
    }
    

    您的代码无法正常工作的原因是,您试图在userInstance被依赖注入(inject)之前设置springSecurityService

    我假设Foo是一个域类,如果它是src/groovy中的一个类,则此方法将行不通,因为这些类不受依赖项注入(inject)的约束。

    08-28 23:01