1

默认情况下,Grails 3.2.8 似乎没有为域类工作的依赖注入。

当我创建一个新应用程序并使用以下 println 添加 Spring Security Core 3.1.1 时:

protected void encodePassword() {
    println "springSecurityService == null? ${(springSecurityService==null).toString()}"
    password = springSecurityService?.passwordEncoder ? springSecurityService.encodePassword(password) : password
}

我得到:

springSecurityService == null? true

如果我尝试类似地创建和注入服务,我会得到相同的空值。有没有好的解决方法?

4

1 回答 1

3

从 Grails 3.2.8 开始,出于性能原因,默认禁用域类的自动装配。您可以通过设置重新启用它grails.gorm.autowire = true

Grame 提到了 spring-security-core 的补丁来解决需要服务注入的问题,同时只需重新启用自动装配。

在此处查看我在 3.2.8 上的非官方变更日志: https ://gist.github.com/erichelgeson/be2f9f62ab63d989f2ec962ae7001f21

于 2017-03-28T14:39:35.730 回答