当我将springSecurityService注入(inject)Grails用户域类时,它始终为null:
我试过了:
def springSecurityService
static transients = ['springSecurityService']
要么
def transient springSecurityService
static transients = ['springSecurityService']
但它是一样的,所以我不能使用springSecurityService.encodePassword(password)
有任何想法吗?为什么不注入(inject)?
我找到了决定。我在参数化构造函数中注释了对this()的调用。
User(String name, String email) {
//this()
this.name = name
this.email = email
}
这会破坏依赖注入(inject)。
最佳答案
这已记录为here(请参阅以“在可行的情况下,生成的域类包括参数化构造函数”开头的注释)。
您可以根据需要删除参数化的构造函数,但是,如果不对生成的默认构造函数进行this()
调用,就不能使用它们,而不会丢失依赖项注入(inject)。
IntelliJ错误地将对this()
的调用标记为无效,并且我在其问题跟踪器中将其报告为错误。该功能将在即将发布的版本15中修复。